Reputation: 10375
I have below snippet inside my Create razor View:
@Html.EditorFor(model => model.UnitPrice)
trying to directly set UnitPrice
using statement like this:
@Model.UnitPrice = 100;
I got something like null pointer exception : Object reference not set to an instance of an object.
How can I assign constant value to a field before posting to create post method?
Upvotes: 5
Views: 44373
Reputation: 59
I think you may be trying to set value after textbox get loaded you need to first pass module from action like
"return View(objModel);"
and then you set value
"@Model.UnitPrice = 100;"
on top of your view and after write
"@Html.EditorFor(model => model.UnitPrice)"
code you will get value into editor. Thanks..
Upvotes: 3
Reputation: 24957
You need to pass the model's content like this on GET method:
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
}
Upvotes: 1
Reputation:
You need to set the value of the property in the model before you pass the model to the view. Assuming your model is
public class ProductVM
{
....
public decimal UnitPrice { get; set; }
}
then in the GET method
ProductVM model = new ProductVM()
{
UnitPrice = 100M
};
return View(model);
If the value is a 'default' value that applies to all instances, you can also set its value in a parameter-less constructor
public class ProductVM
{
public ProductVM()
{
UnitPrice = 100M;
}
....
public decimal UnitPrice { get; set; }
}
Note that the reason for the NullReferenceException
is that you have not passed a model to your view.
Upvotes: 4