0
我正在使用ASP MVC的web應用程序。我正在構建一個頁面來編輯用戶的數據(模型USER,查看ModifyUser)。如何通過自定義ViewModel驗證模型的元數據?
我以這種方式驗證模型:
[MetadataType(typeof(USERS_Metadata))]
public partial class USER
{
public class USERS_Metadata
{
[Required(ErrorMessage = "FALTA NOMBRE")]
[StringLength(30, ErrorMessage = "Nombre entre 3 y 30 caracteres", MinimumLength = 3)]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "Error en el formato del nombre.")]
public string NAME { get; set; }
然後我用自動地驗證用戶輸入的觀點:
<div class="editor-label">
<%: Html.LabelFor(model => model.SURNAME) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.SURNAME) %>
<%: Html.ValidationMessageFor(model => model.SURNAME) %>
</div>
問題是我的觀點也要去需要訪問一些其他使用自己模型的實體,如USERCATEGORY,這使得使用強類型視圖更不舒服。
此外,可能更重要的是,我不希望我的視圖必須處理甚至瞭解屬性,例如用戶的會話ID,目前我處理的是這樣的(我討厭它):
<%: Html.HiddenFor(model => model.SESSIONID) %>
除非我完全錯誤,最理智的選擇是建立一個自定義的ViewModel。我決定構建我的ModifyUserViewModel以匹配USER中的那些字段,在我的視圖中需要這些字段,並從其他模型中添加幾個字段...但我不知道如何在USER中傳播元數據,我使用用於字段驗證,以及新的ViewModel。這個元數據是從數據庫自動構建的,拷貝它會讓我感到內在死亡,即使它工作。
什麼是典型的,最堅持的,最簡單的方法來驗證視圖像我目前正在做的,但與ViewModel?
爲什麼你需要附加sessionId隱藏的?你在任何地方使用它? –
如果我沒有,提交後它抱怨sessionId不能爲空(它試圖驗證整個模型)。 – jesusiniesta