У меня есть класс модели, который идет какMVC модель привязки - Сохранение значений во время частичного редактирования
public class Mod
{
public string StaticProp1 {get; set;}
public string StaticProp2 {get; set;}
public string EditableProp1 {get; set;}
}
Я хочу, чтобы представление, в котором я могу редактировать EditableProp1
но где StaticProp1
, StaticProp2
отображаются, но не редактируемые.
Я создал строго типизированный:
@model Mod
@using (Html.BeginForm())
{
<p>@Model.StaticProp1</p>
<p>@Model.StaticProp2</p>
@Html.TextBoxFor(m => m.EditableProp1)
<input type="submit" value="Save" />
}
В моем контроллере, когда я имею дело с действием я считаю штраф EditableProp1.
[HttpPost]
public ActionResult Edit(Mod model, FormCollection collection)
{
string editableProp = model.EditableProp1; //This works fine
string staticProp1 = model.StaticProp1; //Missing
return View(model);
}
Это вызывает проблемы, если я отправляю назад по какой-то причине, как staticProp1 теперь будет нулевым, и вид не сможет отобразить его.
Я знаю, что я могу добавить
@Html.HiddenFor(m => m.StaticProp1)
@Html.HiddenFor(m => m.StaticProp2)
на мой взгляд, и что он будет работать нормально, но мне интересно, если есть другой способ лучше.
Мои значения уже представлены на форме (<p>@Model.StaticProp1</p>
). Есть ли способ привязать модель к не редактируемым тэгам? Есть ли помощник HTML, который делает что-то вроде этого?
Кстати, если это не очевидно, я только начинаю с MVC, поэтому, если я полностью пропущу точку, пожалуйста, дайте мне знать!
Если 'StaticProp' приходит из базы данных или что-то, вы можете прочитайте их снова и установите данные модели в методе обратной передачи – Shoe
Почему именно вы хотите избежать HiddenFor? Это обычное дело. –
Я хотел избежать этого, потому что их очень мало (моя модель более сложна, чем я показал здесь). Просто казалось, что они загромождали представление, и, поскольку ценности уже в форме, я подумал, что, возможно, был другой путь. Что-то вроде @ Html.LiteralFor (...) –