小编Col*_*lin的帖子

Asp.Net MVC EnableClientValidation不起作用

我希望客户端验证与服务器端验证一样好.我意识到这一点如下:

型号:(该模型有一个包含Test类的DataModel(dbml))

namespace MyProject.TestProject
{
    [MetadataType(typeof(TestMetaData))]
    public partial class Test
    {

    }

    public class TestMetaData
    {
        [Required(ErrorMessage="Please enter a name.")]
        [StringLength(50)]
        public string Name { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器没什么特别的.

风景:

<% Html.EnableClientValidation(); %>
<% using (Ajax.BeginForm("Index", "Test", FormMethod.Post, 
            new AjaxOptions {}, new { enctype = "multipart/form-data" }))
   {%>
   <%= Html.AntiForgeryToken()%>
    <fieldset>
        <legend>Widget Omschrijving</legend>
        <div>
            <%= Html.LabelFor(Model => Model.Name) %>
            <%= Html.TextBoxFor(Model => Model.Name) %>
            <%= Html.ValidationMessageFor(Model => Model.Name) %>
        </div>
    </fieldset>
    <div>
        <input type="submit" value="Save" />
    </div>
 <% …
Run Code Online (Sandbox Code Playgroud)

validation client-side-validation data-annotations asp.net-mvc-2

14
推荐指数
1
解决办法
1万
查看次数

Post后,Asp.Net MVC EditorTemplate模型丢失了

我有一个控制器有两个简单的方法:

UserController方法:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Details(string id)
{
 User user = UserRepo.UserByID(id);

 return View(user);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Details(User user)
{
 return View(user);
}
Run Code Online (Sandbox Code Playgroud)

然后有一个简单的视图来显示细节:

<% using (Html.BeginForm("Details", "User", FormMethod.Post))
   {%>
 <fieldset>
  <legend>Userinfo</legend>
  <%= Html.EditorFor(m => m.Name, "LabelTextBoxValidation")%>
  <%= Html.EditorFor(m => m.Email, "LabelTextBoxValidation")%>
  <%= Html.EditorFor(m => m.Telephone, "LabelTextBoxValidation")%>
 </fieldset>
 <input type="submit" id="btnChange" value="Change" />
<% } %>
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用编辑器模板"LabelTextBoxValidation":

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%= Html.Label("") %>
<%= Html.TextBox(Model,Model)%>
<%= Html.ValidationMessage("")%>
Run Code Online (Sandbox Code Playgroud)

显示用户信息没问题.该视图呈现完美的用户详细信息.当我提交表单时,对象用户将丢失.我调试了行"return View(User);" 在Post Details方法中,用户对象填充了可空值.如果我不使用编辑器模板,则用户对象将填充正确的数据.因此编辑器模板必定存在问题,但无法弄清楚它是什么.建议?

c# asp.net-mvc editortemplates asp.net-mvc-2

5
推荐指数
1
解决办法
1081
查看次数