ASP.NET MVC表单不会发布

时间:2010-02-11 13:32:07

标签: html asp.net-mvc forms post

我有一个非常简单的控制器和用于显示和编辑用户个人资料数据的视图。

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

代码如下:

<%= 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();
        }
    }
}

}

有什么东西跳出来吗?

1 个答案:

答案 0 :(得分: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">

&lt;%using(Html.BeginForm())%&gt;之前的缺失引用足以破坏表单POST动作。没有错误,没有代码着色的变化。没有视觉指示。什么都没有。

要记住的一个!:

当您的表单无法发布时,请在Html.BeginForm()行上方查找格式错误的HTML。