2010-02-11 4 views
1

У меня есть очень простой контроллер и представления для отображения и редактирования данных профиля пользователя.ASP.NET MVC form не будет размещать

Проблема в том, что форма не будет размещаться. Я не вижу проблемы ...

код следующим образом:

<%= 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

ответ

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 выше линии Html.BeginForm().

Смежные вопросы