HtmlHelpers在ASP.NET中的意外副作用

时间:2009-11-03 19:41:54

标签: asp.net-mvc

我有一个ASP.NET MVC表单,用于向站点添加模块。该视图具有强类型ViewModel,其属性为“Name”和“Content”。在这个表单上,我有一个子表单,用于向模块添加一个部分。子表单包含标记为“名称”和“内容”的字段,因为它们适用于节对象。但是,遗憾的是,对于我来说,内置的HTML帮助函数似乎将这些字段自动绑定到视图模型上的匹配属性值,即使它们旨在应用于完全不同的对象。

示例类:

public class Module 
{
    public string Name {get;set;}
    public string Content {get;set;}
    // ...
}

public class Section 
{
    public string Name {get;set;}
    public string Content {get;set;}
    // ...
}

形式:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Module>" %>

<!-- rest of page here -->

<%using (var form = Html.BeginForm("AddSection", "Modules")){%>

    <ul class="form">
        <li>
            <label for="Number">Section Number:</label>
            <%=Html.TextBox("Number", null, new { size=5, maxlength=5 })%>
            <%=Html.ValidationMessage("Number")%>
        </li>
        <li>
            <label for="Name">Section Name:</label>
            <%=Html.TextBox("Name")%>
            <%=Html.ValidationMessage("Name")%>
        </li>        
        <li>
            <div style="width: 75%;">
                <label for="Content">Section Content: (<a href="http://textile.thresholdstate.com" target="_blank">formatting help</a>)</label>
                <%=Html.TextArea("Content", null, new { @class = "text-entry" })%>
                <%=Html.ValidationMessage("Content")%>
            </div>
        </li>
        <li>
            <div style="width: 75%;">
                <label>Content Preview: (<a href="#" onclick="togglePreviewPane(true); return false;">Show / Hide</a>)</label>
                <div id="PreviewBox" class="black-border text-entry">&nbsp;</div>
            </div>
        </li>
    </ul>

    <input type="hidden" id="ModuleID" name="ModuleID" value="<%=Model.ID%>" />
    <input type="submit" id="SubmitButton" name="SubmitButton" value="Add Section" />
<%}%>

我希望Name和Content输入开始是空白的,但html帮助器似乎是预先绑定到页面的视图模型而没有我的指示。我怎么能阻止这个...

1 个答案:

答案 0 :(得分:1)

尝试让<%=Html.TextBox("Name",string.Empty)%>强制文本框为空白