ViewModel
ドロップダウンリストとして使用したいので、データベース内の2つのエンティティ「Categories」と「Manufacturers」を表すためにを使用しました。両方のサウンドと作業用のドロップダウンリストを作成することができました。
ViewModelは次のとおりです。
public class New_Product_View_Model
{
public int SelectedManufacturerID { get; set; }
public SelectList Manufacturers { get; set; }
public int SelectedCategoryID { get; set; }
public SelectList Categories { get; set; }
}
[HttpGet]Controller
アクションは次のとおりです。
public ActionResult Insert_New_Product()
{
var dbcontext = new LNQ2SQLDataContext();
var CatQ = from P in dbcontext.Categories
where P.SUB_CAT == null
select P;
var ManQ = from P in dbcontext.Manufacturers
select P;
var VM = new New_Product_View_Model();
VM.Categories = new SelectList(CatQ, "CAT_ID", "CAT_Name");
VM.Manufacturers = new SelectList(ManQ, "MAN_ID", "MAN_Name");
//Passes the 'VM' to the view
return View(VM);
}
そして私が持っているビューはこのように見えます:
@model MyAppName.ViewModels.New_Product_View_Model
@using (Html.BeginForm(FormMethod.Post))
{
@Html.DropDownListFor(m => m.SelectedCategoryID, Model.Categories, "-- Select a category --")
<br />
@Html.DropDownListFor(m => m.SelectedManufacturerID, Model.Manufacturers, "-- Select a manufacturer --")
<input type="submit" value="Add New Product" />
}
これまでのところ、すべてが完全に正常に機能しています
これが[ HttpPost ] ActionResultです:
[HttpPost]
public ActionResult Insert_New_Product(New_Product_View_Model NPVM)
{
//A few things here
//then
return View();
}
ページの送信ボタンをクリックすると、次のエラーが発生します。
そして私が知る限り、それModel
はビュー内のがnull
HttpPostメソッドが実行されるときだからです。return
HttpPostアクションには、のインスタンスがないためですNew_Product_View_Model
。モデルをビューに渡したくないので、ばかげています!さらに製品を追加する必要がある場合に備えて、同じページを利用できるようにしたいだけです。
私はこれと交換しようとしましたreturn
:
return View(new New_Product_View_Model());
しかし、私はこのエラーを受け取ります: ここの写真を見てください
私もこれを試しました:
NPVM = new New_Product_View_Model();
return View(NPVM);
しかし、同じエラーが発生しました。
誰かが解決策を持っていますか?助けていただければ幸いです。