asp.net mvc模型绑定

时间:2010-05-18 21:46:00

标签: asp.net-mvc html-helper

我使用asp.net mvc进行模型绑定。当我将模型传递给视图时,我能够看到标签内显示的模型数据

 <%= Html.Label(Model.title) %>
 <%= Html.Label(Model.description) %>

但是我无法使用

执行相同的操作
 <%= Html.TextArea(Model.description)%>

在标签中显示为反对文本框之间是否存在语法差异?

这是我的观点

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<EditDocumentViewData>" %>


<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Update
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" 
    <h2>Update</h2>
      <form id="myForm"  action="<%=Url.Action("Update") %>"  method="post" >  
   <% Html.EnableClientValidation(); %>
        <div id="validationSummary"><%= Html.ValidationSummary() %> </div>
    <%= Html.ClientSideValidation(typeof(Document))
        .UseValidationSummary("validationSummary") %>
<div style="float:left">

<input type="button" class="btnpost" id="btnMain" value="Main Thumb"/>
    <input id="btnDelete"  class="btnpost" type="button"  value="Delete"/>
    <br />   <br />   <br />

   <br />   <br />   <br />   <br />

    <table>
      <%= Html.HiddenFor(m => m.id)%>

       <tr>   <td> <%=Html.Label("Title")%></td><td>
    <%=Html.TextBox("title", Model.title)%>
    </td> </tr>
      <tr>   <td> <%=Html.Label("Description")%></td><td>
 <%= Html.TextArea("description", Model.description)%>

     </td> 
     <td>
                    <%= Html.ValidationMessage("description")%>

            </td>
     </tr><tr><td> <%=Html.Label("Summary")%></td><td>


   <%= Html.TextAreaFor(m=>m.summary)%>

     </td>  <td>
                    <%= Html.ValidationMessage("summary")%>

            </td></tr>


  </form>    


</asp:Content>

我的控制器操作

[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Update(int Id)
{
    Document doc= _documentRepository.GetById(Id);
    EditDocumentViewData documentViewData=new EditDocumentViewData();
    documentViewData.id = doc.document_id;
    documentViewData.category = doc.Category1.name;
    documentViewData.title = doc.title;
    documentViewData.Thumbs = doc.Thumbs.ToList();
    documentViewData.description = doc.description;

    documentViewData.summary = doc.summary;

    return View(documentViewData);
    // TempData["docid"] = doc.document_id;
    //if (doc  != null)
    //    return View(doc);

    //else
    //    return View("Index");

}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(EditDocumentViewData editDoc)
{
    Document doc= _documentRepository.GetById(editDoc.id);

    doc.title = editDoc.title;

    doc.description = editDoc.description;

    doc.summary = editDoc.summary;
    _unitOfWorkManager.Commit();
    return RedirectToAction("Index");
}

2 个答案:

答案 0 :(得分:3)

在您的使用中,前两个元素创建label元素,并使用label文本和标签for属性的参数。第三个将创建一个textarea,但它使用该参数作为该区域的名称。如果您希望textarea包含说明的内容,则需要使用其他签名。

<%= Html.TextArea( "Description", Model.Description ) %>

或使用强类型助手

<%= Html.TextAreaFor( m => m.Description ) %>

在另一个节点上,如果您只想显示模型属性的内容,则应该使用Encode或更新的<%: %>语法(在ASP.NET 4中)。

<span class="description">
<%= Html.Encode( Model.Description ) %>
</span>

答案 1 :(得分:2)

    <%= Html.TextAreaFor(model => model.Description, 4, 10, new { style = "width: 100%", @class = "textarea" })%>