0

Vs2012 /WebSite Razor2 開発モードでは、次の検証方法を使用できますか?

では、MVC と同様の方法を使用するにはどうすればよいでしょうか。

// Setup validation
Validation.RequireField("email", "You must specify an email address.");
Validation.RequireField("password", "You must specify a password.");
Validation.Add("password",
    Validator.StringLength(
        maxLength: Int32.MaxValue,
        minLength: 6,
        errorMessage: "Password must be at least 6 characters"));

<ol>
    <li class="email">
        <label for="email" @if (!ModelState.IsValidField("email"))
            {<text>class="error-label"</text>}>电子邮件地址</label>
        <input type="text" id="email" name="email" value="@email" @Validation.For("email")/>
        @* 将任何用户名验证错误写入页中 *@
        @Html.ValidationMessage("email")
    </li>
    <li class="password">
        <label for="password" @if (!ModelState.IsValidField("password")) {<text>class="error-label"</text>}>密码</label>
        <input type="password" id="password" name="password" @Validation.For("password")/>
        @* 将任何密码验证错误写入页中 *@
        @Html.ValidationMessage("password")
    </li>
    <li class="remember-me">
        <input type="checkbox" id="rememberMe" name="rememberMe" value="true" checked="@rememberMe" />
        <label class="checkbox" for="rememberMe">记住我?</label>
    </li>
</ol>
<input type="submit" value="登录" />
4

1 に答える 1

2

おそらく、モデルの使用を避けようとしている場合は、System.ComponentModel.DataAnnotationsライブラリを利用する強く型付けされたViewModelオブジェクトを使用できます。ViewModelクラスの各プロパティに注釈を付けると、Razorが注釈を読み取り、適切な検証を行います。次に、コントローラーで、ポストバックで作業を行う前に、(ModelState.IsValid)かどうかを確認するだけです。AutoMapperを使用してViewModelプロパティをモデルにマップするよりも。

System.ComponentModel.DataAnnotationsを使用したViewModelの例を次に示します。

public class PropertyViewModel
{
    public int Id { get; set; }
    [Required]
    public PropertyType PropertyType { get; set; }
    [Required]
    public string Address { get; set; }
    [Required]
    public string City { get; set; }
    [Required]
    public StateFullName State { get; set; }
    [Required]
    public string Zip { get; set; }
}

これをビューに追加します。

@model PropertyViewModel
于 2013-02-06T02:43:18.750 に答える