Лучшие практики для отображения значений после отправки формы в ASP.NET MVC - PullRequest
1 голос
/ 13 апреля 2019

Я довольно новичок в ASP.NET и MVC, и в настоящее время я пробую следующее:

  • Модель: свойства формы
  • Вид: отображение формы дляпользователь
  • Контроллер:
    • Действие: Сделайте что-нибудь
    • Вернитесь к исходному виду и отобразите значения для пользователя

С нормальным HTML я получил это, чтобы работать.С синтаксисом бритвы мне до сих пор не удалось повторно отобразить значения после отправки формы.

Моя модель:

namespace MyModels
{
  public class SubmitTicketFormModel
  {
     [DisplayName("First Name")]
     public string _firstName { get; set; }

     [DisplayName("Last Name")]
     public string _lastName { get; set; }
  }
}

Мой вид:

@model MyModels.SubmitTicketFormModel

@{
    ViewData["Title"] = "SubmitTicketView";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>Request</h1>

@using (Html.BeginForm("SubmitTicketAction", "SubmitTicketContoller", FormMethod.Post))
{
    <div class="form-group">
        @Html.LabelFor(model => model._firstName)
        @Html.TextBoxFor(model => model._firstName, new { @class = "form-control" })

        @Html.LabelFor(model => model._lastName)
        @Html.TextBoxFor(model => model._lastName, new { @class = "form-control" })
    </div>

    <input type="submit" value="Post comment" />
}


<table class="table table-bordered table-sm">
    <thead class="thead-light">
        <tr>
            <th>col1</th>
            <th>col2</th>
        </tr>
    </thead>
    <tbody>

        <tr>
            <td>
                @Model._firstName
            </td>
            <td>
                @Model._lastName
            </td>
        </tr>

    </tbody>
</table>

Контроллер:

    public class SubmitTicketController : Controller
    {
        public ActionResult SubmitTicketView()
        {
            var TicketInstance = new SubmitTicketFormModel();
            return View(TicketInstance);
        }

        [HttpPost]
        public ActionResult SubmitTicketAction(SubmitTicketFormModel model)  
        {
            var NewTicketInstance = new SubmitTicketFormModel()
            {
                _firstName = model._firstName,
                _lastName = model._lastName
            };

            return View(NewTicketInstance);

        }
     }

 }

Можете ли вы направить меня в правильном направлении?

1 Ответ

2 голосов
/ 13 апреля 2019

Если вы хотите, чтобы тот же самый вид отображался после того, как пользователь нажимает кнопку «Отправить», то, я думаю, вы не хотите этого @using (Html.BeginForm («SubmitTicketAction», «SubmitTicketContoller», FormMethod.Post)) в Интерфейс, чтобы появиться снова. Только значения имени и фамилии в вашем представлении, из которых вы записали свою логику в своем представлении. В этом случае вы можете просто передать ViewBag в вашем представлении из контроллера, что поможет вашему View понять, должен ли он отображать форму ввода или отображать введенные пользователем данные.

[HttpPost]
        public ActionResult SubmitTicketAction(SubmitTicketFormModel model)  
        {
            var NewTicketInstance = new SubmitTicketFormModel()
            {
                _firstName = model._firstName,
                _lastName = model._lastName
            };
            ViewBag.Check = "true";
            return View(ViewName , modelname);

        }

А потом, на ваш взгляд,

@model MyModels.SubmitTicketFormModel

@{
    ViewData["Title"] = "SubmitTicketView";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@if(ViewBag.Check != null)
{
<h1>Request</h1>

@using (Html.BeginForm("SubmitTicketAction", "SubmitTicketContoller", FormMethod.Post))
{
    <div class="form-group">
        @Html.LabelFor(model => model._firstName)
        @Html.TextBoxFor(model => model._firstName, new { @class = "form-control" })

        @Html.LabelFor(model => model._lastName)
        @Html.TextBoxFor(model => model._lastName, new { @class = "form-control" })
    </div>

    <input type="submit" value="Post comment" />
}
}
else
{

<table class="table table-bordered table-sm">
    <thead class="thead-light">
        <tr>
            <th>col1</th>
            <th>col2</th>
        </tr>
    </thead>
    <tbody>

        <tr>
            <td>
                @Model._firstName
            </td>
            <td>
                @Model._lastName
            </td>
        </tr>

    </tbody>
</table>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...