添加html5属性后,Modelbinding刹车

时间:2011-08-13 17:12:25

标签: asp.net-mvc-2 html5 model-binding

我有一个视图,它使用TextBoxFor帮助方法来编辑模型。像这样:

<div class="editor-field">
                <%:Html.TextBoxFor(model => model.Property, new { @class = "mybox" })%>
                <%: Html.ValidationMessageFor(model => model.Property)%>
</div>

因此,Modelbinder工作正常,我可以编辑和保存我的模型。

当我添加html5属性'type'和'step'时,就像这样

<div class="editor-field">
                <%:Html.TextBoxFor(model => model.Property, new { @class = "mybox",@type = "number", @step = "1" })%>
                <%: Html.ValidationMessageFor(model => model.Property)%>
</div>

我看到漂亮的数字控件而不是文本框,但是模型绑定刹车,每当我更改我的属性时,我在模型中收到0。提交属性。

我的代码出了什么问题?

这是我的简单模型

public class Model
    {

        [DisplayName("Property")]
        public int Property
        {
            get;
            set;
        }           
    }

内森,我对这个问题的解释并不准确。这里Ajax Form breaks after adding html5 attributes in Chrome/Safari是更好的描述和解决方法。

1 个答案:

答案 0 :(得分:1)

尝试一下:

http://deanhume.com/Home/BlogPost/asp-net-mvc-html5-toolkit/29

根据您的代码,这对我有用:

控制器:

public class IndexController : Controller
{

    public ActionResult Index()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(Model model)
    {
        return Content(model.Property.ToString());
    }

}

型号:

public class Model
{
    [DisplayName( "Property" )]
    public int Property
    {
        get;
        set;
    }
}

查看:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BindTest.Models.Model>" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Index</title>
    </head>
    <body>
    <%using( Html.BeginForm( "index", "index" ) ){ %>
        <div class="editor-field">
            <%=Html.TextBoxFor(model => model.Property, new {@class = "mybox", @type = "number", @step = "1"})%>
            <%=Html.ValidationMessageFor(model => model.Property)%>
        </div>

        <button type="submit" value="click Me">Click Me</button>

    <% } %>
    </body>
</html>

当我点击我的提交按钮时,控制器会收到我的数字输入控件中选择的数字并输出到浏览器。

我们需要看到更多有用的代码。