4

テキストボックスへの入力を要求するクライアント側の検証を正常に実装しました。ただし、テキストボックスの内容を評価して、整形式の URL であるかどうかを確認したいと考えています。これが私がこれまでに持っているものです:Index.cshtml:

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>
@model Ticket911.Models.ValidationModel                          
@{
ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
@using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainer" , OnSuccess = "$.validator.unobtrusive.parse('form');" }))

{
<p>
    Error Message: @Html.ValidationMessageFor(m => m.URL)
</p>
<p>
@Html.LabelFor(m =>m.URL):
@Html.EditorFor(m => m.URL)
</p>
<input type="submit" value="Submit" />

検証モデル:

 public class ValidURLAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        return (value != null);
    }
}

public class ValidationModel
{
    [Required]
    public string URL {get; set;}
}

モデルの URL 検証が確実に行われるようにするにはどうすればよいですか? [送信] ボタンがクリックされたときに、テキスト ボックスに入力された URL に移動するにはどうすればよいですか?

どうもありがとう:)

4

2 に答える 2

6

あなたはそれを行うことができますDataAnnotations

public class ValidationModel
{
  [Required]
  [RegularExpression(@"^http(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$", ErrorMessage = "URL format is wrong")]
  public string URL {get; set;}
}

HTTPPostAction メソッドで、検証をチェックするプロパティを呼び出すことができますModelState.IsValid

[HttpPost]
public ActionResult Save(ValidationModel model)
{
  if(ModelState.IsValid)
  {
   //Save or whatever
  }
  return View(model);

}
于 2012-05-15T18:11:56.437 に答える
5

良い方法は、mvc プロジェクトで次に使用するために属性を実装することです。このような:

public class UrlAttribute : RegularExpressionAttribute
{
    public UrlAttribute() : base(@"^http(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$")
    {}
}

モデルのように:

[Url(ErrorMessage = "URL format is wrong!")]
public string BlogAddress { get; set; }
于 2012-10-10T15:05:52.853 に答える