Create razorView内に以下のスニペットがあります。
@Html.EditorFor(model => model.UnitPrice)
次のようなステートメントを使用して、UnitPrice
を直接設定しようとしています。
@Model.UnitPrice = 100;
Nullポインタ例外のようなものがあります:Object reference not set to an instance of an object.
Postメソッドを作成するためにpostする前にフィールドに定数値を割り当てるにはどうすればよいですか?
モデルをビューに渡す前に、モデルのプロパティの値を設定する必要があります。あなたのモデルが
public class ProductVM
{
....
public decimal UnitPrice { get; set; }
}
次にGETメソッドで
ProductVM model = new ProductVM()
{
UnitPrice = 100M
};
return View(model);
値がすべてのインスタンスに適用される「デフォルト」値である場合は、パラメーターなしのコンストラクターでその値を設定することもできます。
public class ProductVM
{
public ProductVM()
{
UnitPrice = 100M;
}
....
public decimal UnitPrice { get; set; }
}
NullReferenceException
の理由は、モデルをビューに渡していないためです。
GETメソッドで次のようにモデルのコンテンツを渡す必要があります。
public class ViewModel
{
public ViewModel()
{
UnitPrice = 100M;
}
...
// if you want constant read-only model in runtime, use readonly keyword before decimal and declare its constructor value
public decimal UnitPrice { get; set; }
}
[HttpGet]
public ActionResult YourView()
{
ViewModel model = new ViewModel()
{
model.Price = 100M; // if the property is not read-only
};
// other logic here
return View(model);
}
// validation on server-side
[HttpPost]
public ActionResult YourView(ViewModel model)
{
if (ModelState.IsValid)
{
// some logic here
}
// return type here
}
テキストボックスがロードされた後に値を設定しようとしている可能性があると思います。最初に次のようなアクションからモジュールを渡す必要があります。
"return View(objModel);"
次に値を設定します
"@ Model.UnitPrice = 100;"
あなたの見解の上にそして書いた後
"@ Html.EditorFor(model => model.UnitPrice)"
エディターに価値をもたらすコード。ありがとう..