2010-02-11 53 views
1

我有一个非常简单的控制器和视图来显示和编辑用户配置文件数据。ASP.NET MVC表单不会发布

问题是表单不会发布。我看不到的问题...

代码如下:

<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %> 

<% using (Html.BeginForm()) {%> 
<div> 
    <fieldset> 
     <p> 
      <label for="Title"> 
       Title:</label> 
      <%= Html.TextBox("Title", Model.Title) %> 
      <%= Html.ValidationMessage("Title", "*") %> 
     </p> 
     <p> 
      <label for="FirstName"> 
       FirstName:</label> 
      <%= Html.TextBox("FirstName", Model.FirstName)%> 
      <%= Html.ValidationMessage("FirstName", "*") %> 
     </p> 
     <p> 
      <label for="LastName"> 
       LastName:</label> 
      <%= Html.TextBox("LastName", Model.LastName)%> 
      <%= Html.ValidationMessage("LastName", "*") %> 
     </p> 
    </fieldset> 
    <fieldset> 
     <legend>Contact with the Encephalitis Society</legend> 
     <p> 
      <label for="Contactable"> 
       Allow The Encephalitis Society to contact me (we will not contact you unless this 
       is checked):</label> 
      <%= Html.CheckBox("Contactable", Model.Contactable)%> 
      <%= Html.ValidationMessage("Contactable", "*") %> 
     </p> 
     <p> 
      <label for="SubscribeNewsletter"> 
       I would like to receive e-newsletters:</label> 
      <%= Html.CheckBox("SubscribeNewsletter", Model.SubscribeNewsletter)%> 
      <%= Html.ValidationMessage("SubscribeNewsletter", "*") %> 
     </p> 
     <p> 
      <label for="wantMembershipInfoPackage"> 
       I would like more information about becoming a member of the Encephalitis Society:</label> 
      <%= Html.CheckBox("wantMembershipInfoPackage", Model.IsMember)%> 
      <%= Html.ValidationMessage("wantMembershipInfoPackage", "*")%> 
     </p> 
     <p> 
      <label for="IsMember"> 
       I am already a member of the Encephalitis Society:</label> 
      <%= Html.CheckBox("IsMember", Model.IsMember)%> 
      <%= Html.ValidationMessage("IsMember", "*") %> 
     </p> 
     <p> 
      <label for="wantToBeRegularDonor"> 
       I would like to make a regular donation to the Encephalitis Society:</label> 
      <%= Html.CheckBox("wantToBeRegularDonor", Model.IsMember)%> 
      <%= Html.ValidationMessage("wantToBeRegularDonor", "*")%> 
     </p> 
    </fieldset> 
    <hr /> 
    <%=Html.ActionLink("Cancel (Return to My Page)", "MyPage", "Members", null, new { @class = "LinkButton LeftButton" })%> 
    <input class="LinkButton RightButton" type="submit" value="Save" /> 
</div> 
<% } %> 

控制器如下:

public class ProfileController : Controller 
{ 

    WebProfile p = WebProfile.Current; 
    Member member = new Member(); 

    // GET: Shows details of the Profile 
    public ViewResult Show() 
    { 
     ViewData["CategoryRole"] = member.CategoryRoleUserFriendly; 
     return View(p); 
    } 

    // GET: /Profile/New - displays a template to create the Profile 
    public ViewResult New() 
    { 
     ViewData["SaveButtonText"] = "Next >>"; 
     return View(p); 
    } 

    // POST: /Profile/New 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult New(FormCollection formValues) 
    { 
     try 
     { 
      WebProfile.GetProfile(member.UserName); 
      UpdateModel(p); 
      return RedirectToAction("MyPage", "Members"); 
     } 
     catch 
     { 
      ViewData["SaveButtonText"] = "Next >>"; 
      return View(); 
     } 
    } 

    // GET: /Profile/Edit - displays a template to create the Profile 
    public ViewResult Edit() 
    { 
     ViewData["SaveButtonText"] = "Save >>"; 
     return View(p); 
    } 

    // POST: /Profile/Edit - displays a template to create the Profile 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(FormCollection formValues) 
    { 
     try 
     { 
      WebProfile.GetProfile(member.UserName); 
      UpdateModel(p); 
      return RedirectToAction("Show"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
} 

}

做任何事情你扑过来?

+0

如果你把你的动作名称放在Html.BeginForm()中会发生什么? – Gregoire 2010-02-11 14:06:00

回答

4

我已经解决了它,它是这样一个微小的问题,我将详细介绍在这里:

的问题是缺少引号(“),如下所示:

<p class="Note>PLEASE NOTE: All items below are Optional</p> 
<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %> 

<% using (Html.BeginForm()) {%> 
<div> 
    <fieldset> 
     ... 

你能找出?它别担心,我花了一天:

<p class="Note>... 

本来应该是:

<p class="Note"> 

使用(Html.BeginForm())%>之前<%缺少的报价足以破坏表单POST操作。没有错误,没有改变代码着色。没有视觉指示。没有。

一记!:

当你的形式将不会发布,查找Html.BeginForm()线以上畸形的HTML。