ASP.NET MVC Форма сообщения - PullRequest
0 голосов
/ 08 октября 2010

Я новичок в приложении ASP.NET MVC. Я пытаюсь создать форму с некоторыми данными, которые пользователь будет заполнять, и как только пользователь нажмет кнопку «Отправить», я хочу, чтобы форма была опубликована с информацией, заполненной и готовой к печати. Я делаю это прямо сейчас так:

// the controller that returns the initial form using ReportCreate.aspx which creates a Html form
public ActionResult ReportCreate()
{
    return View(viewData);
}


// my post action which gets the information for the submitted form
// and use the ReportPost.aspx to view a similar page as ReportCreate.aspx but with all the Html.TexBox inputs replaced with their values obtained from the submitted form      
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ReportCreate(FormCollection form)
{
    ReportFormData formData = new ReportFormData();

    formData.Date = form["date"];
    formData.Company = form["company"];
    formData.SiteNameA = form["siteNameA"];
    formData.SiteNameB = form["siteNameB"];
    formData.FreqBand = form["freqBand"];
    formData.FileNumber = form["fileNumber"];
    formData.ResponseDate = form["responseDate"];

    formData.SiteAddressA = form["siteAddressA"];
    formData.SiteAddressB = form["siteAddressB"];

    this.TempData.Add("viewData", viewData);

    return View("ReportPost", formData);
}

Что мне не нравится в этом способе, так это то, что мне нужно создавать aspx-страницы (ReportCreate.aspx & ReportPost.aspx), которые мне нужно сохранять одинаковыми, и изменять их вместе, если мне нужно внести какие-либо изменения в внешний вид формы. Я чувствую, что должен быть более профессиональный способ справиться с этой общей проблемой. Я пытался посмотреть онлайн, но ничего не смог получить. Пожалуйста, дайте мне знать. Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

Если вы хотите отобразить опубликованные данные в той же форме, просто используйте ту же страницу aspx, что и при создании данных.

Однако обычным способом является наличие одной страницы для:

  • Создать - для ввода значений в первый раз и после успешного перенаправления ввода на
  • Подробности - когда данные не в форме, а в виде обычного текста

Если вам нужно изменить данные, используйте

  • Редактировать

Для отображения коллекции данных используйте

  • Индекс

Еще один момент, на который следует обратить внимание: вам не нужно вручную устанавливать все значения из формы в свой класс ReportFormData, вместо этого:

[HttpPost]
public ActionResult Create(ReportFormData formData) 
{
  if(!ModelState.Isvalid){
     return View(formData);
  }
  else
  {
   RedirectToAction("Index");
  } 
}
0 голосов
/ 08 октября 2010

Если все форматирование одинаково, кроме того, что текстовое поле должно быть меткой, просто используйте условное выражение в своем представлении, чтобы определить, следует ли отображать текстовое поле или нет.

<%if(model.ReadOnly){%><%=Html.LabelFor(m => m.Company)%><%else%><%=Html.TextBoxFor(m => m.Company)%><%}%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...