以下是我的场景:我有一个名为MaterialPaymentRequest
的模型。它由几个MaterialPaymentRequestSubItem
组成,因此PaymentRequest
是父项,MaterialPaymentRequestSubItem
是它的子项。 考虑当我有一个MaterialPaymentRequest
,我想给它添加一个孩子。 目前其内部MaterialPaymentRequestSbuItemController
方法是这样的:ASP.Net MVC:将信息传递给HTTPost控制器
public ActionResult CreateChild(int parentId)
{
if (parentId==null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
var parenetRequest = (from request in db.MaterialPaymentRequests
where request.Id==parentId
select request);
ViewBag.MaterialPaymentRequestId = new SelectList(parenetRequest, "Id", "Description", parentId);
ViewBag.ParentID = parentId;
return View();
}
我的问题是内部视图,用户可以改变它的父,因为我有我不能冻结,或使其只读下拉:
@Html.DropDownList("MaterialPaymentRequestId", String.Empty)
我试过使用ViewModel
后后我设置我chil的parentID但是这种方式我不知道如何将ParentId传递给http-post控制器方法。
我使用VIEWMODE前回发的方法是这样的:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateChild([Bind(Include = "Id,Name,Unit,UnitPrice,MaterialPaymentRequestId,Quantity")] MaterialPaymentRequestSubItem materialpaymentrequestsubitem)
{
if (ModelState.IsValid)
{
...
}
....
}
我见过像this方法,其使用Html.Hidden
,但我认为这是不够安全,因为用户可以操纵在用户侧信息。
有没有更好的方法来做到这一点?
我可以将信息传递给接受parentID作为参数的控制器吗?
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateChild(int parentID, [Bind(Include = "Id,Name,Unit,UnitPrice,MaterialPaymentRequestId,Quantity")] MaterialPaymentRequestSubItem materialpaymentrequestsubitem)
{
if (ModelState.IsValid)
{
...
}
....
}