我的创建剃须刀里面有以下片段视图:
@Html.EditorFor(model => model.UnitPrice)
尝试使用如下语句直接设置UnitPrice
:
@Model.UnitPrice = 100;
我得到了类似空指针异常的内容:Object reference not set to an instance of an object.
如何在发布以创建post方法之前为字段指定常量值?
答案 0 :(得分:2)
在将模型传递给视图之前,需要在模型中设置属性的值。假设你的模型是
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
的原因是您尚未将模型传递给您的视图。
答案 1 :(得分:2)
我认为你可能在文本框加载后尝试设置值,你需要首先从行动中传递模块,如
"返回视图(objModel);"
然后设置值
" @ Model.UnitPrice = 100;"
在您的视图之上和写完之后
" @ Html.EditorFor(model => model.UnitPrice)"
代码,您将获得编辑器的价值。 感谢..
答案 2 :(得分:0)
您需要在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
}