定義參數模型MVC:請只需要對某些觀點
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
是更多鈔票來改變這個參數對某些觀點的屬性後模型參數?例如,我想這些特性(所需的屬性),以保持視圖1,視圖2和視圖3而不是view4。我可以禁用view3的這個屬性嗎?
定義參數模型MVC:請只需要對某些觀點
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
是更多鈔票來改變這個參數對某些觀點的屬性後模型參數?例如,我想這些特性(所需的屬性),以保持視圖1,視圖2和視圖3而不是view4。我可以禁用view3的這個屬性嗎?
是它更多鈔票改變這個參數對於某些視圖的屬性?
否,屬性烘烤成在編譯時的組裝。
正確的方式做,這是使用視圖模型:
public ActionResult Create(CreateViewModel model)
{
... the name will not be required here
if (ModelState.IsValid)
{
}
}
public ActionResult Edit(EditViewModel model)
{
... the name will be required here
if (ModelState.IsValid)
{
}
}
:
public class CreateViewModel
{
[DisplayName("Name")]
public string Name { get; set; }
}
public class EditViewModel
{
[Required(AllowEmptyStrings = false, ErrorMessage = "No null")]
[DisplayName("Name")]
public string Name { get; set; }
}
,並且將在submiting形式從2次叫你們各自的控制措施將與視圖模型工作
替代辦法將包括自定義模型粘合劑或實施IValidatableObject
接口和做基於當前操作一些動態驗證。用兩個詞,你正在走向深淵。個人這是不是我會惹但如果你想隨時在那個方向去探索,如果你不喜歡我推薦的解決方案。
所以,如果名稱模型上有一個MaxLength,你會在每個視圖模型上具有相同的屬性?你想要的任何模型屬性都會被複制? –
呃......這聽起來像是違反了MVC流程,您的控制器/模型不應該知道任何關於或關心視圖的事情。如果一個視圖模式不應該看到一些屬性,也許它不應該使用相同的控制器/模型。 – Rudu
請停止指的是「ASP.NET MVC」簡稱爲「MVC」。一個是框架,而另一個是獨立於語言的設計模式。這就像打電話給IE - 「互聯網」 –
聽起來像你需要一個View3的不同viewmodel :) – scartag