У меня есть обязательное поле, строковый атрибут {get; set} в классе и хотите установить его значение в бритве. Что-то вроде следующего возможно?Как установить @ model.attribute в режиме бритвы?
@model.attribute = "whatever'
У меня есть обязательное поле, строковый атрибут {get; set} в классе и хотите установить его значение в бритве. Что-то вроде следующего возможно?Как установить @ model.attribute в режиме бритвы?
@model.attribute = "whatever'
Во-первых, вопросы капитализации.
@model
(в нижнем регистре «м») является зарезервированным ключевым словом в представлениях бритвенных объявить тип модели в верхней части вашей точки зрения, например:
@model MyNamespace.Models.MyModel
Далее в файле, вы можете ссылаться на атрибут, который вы хотите с @Model.Attribute
(в верхнем регистре «М»).
@model
заявляет модель. Model
ссылается на экземпляр модели.
Во-вторых, вы можете присвоить значение своей модели и использовать ее позже на странице, но она не будет сохраняться, когда страница подчиняется действию вашего контроллера, если это не значение в поле формы. Для того, чтобы получить значение обратно в вашей модели в процессе модели связывания, вам нужно присвоить значение поля формы, например:
Вариант 1
В вашем действии контроллера необходимо создать модель для первого представления вашей страницы, в противном случае при попытке установить Model.Attribute
объект Model
будет равен нулю.
Контроллер:
// This accepts [HttpGet] by default, so it will be used to render the first call to the page
public ActionResult SomeAction()
{
MyModel model = new MyModel();
// optional: if you want to set the property here instead of in your view, you can
// model.Attribute = "whatever";
return View(model);
}
[HttpPost] // This action accepts data posted to the server
public ActionResult SomeAction(MyModel model)
{
// model.Attribute will now be "whatever"
return View(model);
}
Вид:
@{Model.Attribute = "whatever";} @* Only do this here if you did NOT do it in the controller *@
@Html.HiddenFor(m => m.Attribute); @* This will make it so that Attribute = "whatever" when the page submits to the controller *@
Вариант 2
Или, так как модели имя на основе, вы можете пропустить создание модели в контроллере и просто введите поле формы с тем же именем, что и ваше свойство модели. В этом случае установка скрытого поля с именем «Атрибут» на «все» гарантирует, что когда страница будет отправлена, значение «все равно» будет привязано к свойству модели Attribute
во время процесса привязки модели. Обратите внимание, что это не должно быть скрытое поле, просто любое поле ввода HTML с name="Attribute"
.
Контроллер:
public ActionResult SomeAction()
{
return View();
}
[HttpPost] // This action accepts data posted to the server
public ActionResult SomeAction(MyModel model)
{
// model.Attribute will now be "whatever"
return View(model);
}
Вид:
@Html.Hidden("Attribute", "whatever");
Благодарим Вас за это. Отличный ответ. – levteck
Этот ответ должен войти в зал славы – petric