これは私のシナリオです:MaterialPaymentRequest
というモデルがあります。それはいくつかのMaterialPaymentRequestSubItem
で構成されているので、PaymentRequest
は親で、MaterialPaymentRequestSubItem
はその子です。 私はMaterialPaymentRequest
を持っていて、それに子供を追加したいときを考えてみましょう。 現在MaterialPaymentRequestSbuItemController
内部その方法は次のようになります。ASP.Net MVC:HTTPostコントローラに情報を渡す
@Html.DropDownList("MaterialPaymentRequestId", String.Empty)
:私はそれを凍結するか、読み取り専用、それをすることはできませんドロップダウンを持っているので
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();
}
私の問題は、ビュー内で、ユーザーがその親を変更することができます私はViewModel
を使用しようとしましたが、postの後に私のchilのparentIDを設定しましたが、この方法では、http-postコントローラメソッドにParentIdを渡す方法がわかりません。ビューモードを使用する前に
私のポストバックメソッドは、このようなものです:私はHtml.Hidden
を使用thisのようなメソッドを見てきましたが、私は、ユーザがユーザ側で情報を操作することができるので、それは十分に確保されていないと思う
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateChild([Bind(Include = "Id,Name,Unit,UnitPrice,MaterialPaymentRequestId,Quantity")] MaterialPaymentRequestSubItem materialpaymentrequestsubitem)
{
if (ModelState.IsValid)
{
...
}
....
}
。
もっと良い方法がありますか?
このような宣言でparentIDをパラメータとして受け入れるコントローラに情報を渡すことはできますか?私はあなたがいない場合は、セッション変数を使用して、サーバー側のPARENTIDコンテンツの状態を維持することをお勧め
@Html.DropDownList("MaterialPaymentRequestId", String.Empty, new { @readonly = "readonly" })
:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateChild(int parentID, [Bind(Include = "Id,Name,Unit,UnitPrice,MaterialPaymentRequestId,Quantity")] MaterialPaymentRequestSubItem materialpaymentrequestsubitem)
{
if (ModelState.IsValid)
{
...
}
....
}