发布后,视图中的HTML帮助器为空

时间:2019-04-03 10:57:06

标签: c# asp.net-mvc asp.net-mvc-4

在视图中传递带有值的模型后,HTML帮助器为空

将模型返回视图后,文本框值将为空。

@model GSG.Tools.Models.EmailTemplateViewModel
@using (Html.BeginForm("EmailTemplate", "Admin", FormMethod.Post))
    {
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
<table class="table" style="width:100%;">
<tr>
                    <td>
                        @Html.LabelFor(m => m.From)
                        <span style="color:red;">*</span>
                    </td>
                    <td>
                        @Html.TextBoxFor(m => m.From, new { @class = "form-control", @id = "txtFrom" })
                        @Html.ValidationMessageFor(m => m.From, "", new { @class = "text-danger" })
                    </td>
                    <td>@Html.LabelFor(m => m.To)</td>
                    <td>
                        @Html.TextBoxFor(m => m.To, new { @class = "form-control", @id = "txtTo" })
                    </td>
                </tr>
</table>
[HttpPost]
        public IActionResult EmailTemplate(EmailTemplateViewModel model)
        {
            if (!ModelState.IsValid)
            {
**My Code
return View(model);
            }

2 个答案:

答案 0 :(得分:0)

请澄清您的问题,因为尚不清楚在提交表单之后还是提交表单之前,文本框是否为空。您的方法被指定为post方法,因此应该用于提交表单。应该有另一种显示视图的方法。

例如,这是一种显示视图以进行编辑/显示的方法。

    [HttpGet]
    public IActionResult EmailTemplate()
    {
        EmailTemplateViewModel model = new EmailTemplateViewModel();

        **Your Code to fetch the data from the database.

        return View(model);
    }

现在请注意,每当您提交表单并且可能发生任何验证错误时,就不会因为您在if条件内返回了视图而返回任何内容。如果即使验证通过也要显示数据,请在if条件之外返回视图。

例如

  [HttpPost]
    public IActionResult EmailTemplate(EmailTemplateViewModel model)
    {
        if (!ModelState.IsValid)
        {
         **My Code

        }
           return View(model);
    }

答案 1 :(得分:0)

[HttpPost]方法用于提交表单。当您打开网址时,您将有一个[HttpGet]方法

[HttpGet]
public IActionResult EmailTemplate()
{
    EmailTemplateViewModel model = new EmailTemplateViewModel();
    //Load Data here    
    return View(model);       
}

另一种情况是,您是否正在尝试提交表单并将数据填写在邮寄请求中? 然后,您的条件就无效了。

[HttpPost]
public IActionResult EmailTemplate(EmailTemplateViewModel model)
{
     if (!ModelState.IsValid)
     {
          **My Code
          return View(model);
      }
      else 
      {
           //populate data here too.
          return View(model);
      }
 }