以下是我的場景:我有一個名爲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)
{
...
}
....
}