在asp.net mvc中回发后保留文本框和下拉列表值

时间:2017-04-18 10:28:13

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

如何在asp.net MVC.i中提交数据后获取旧值我是MVC的新东西我读了很多文章来达到这个结果,我的问题是在点击搜索按钮后我丢失了文本框和下拉列表中的所有值

这是我的view.cshtml页面

 @using (Html.BeginForm("Index", "Home", FormMethod.Post))
     {
       <input class="calendarr font" name="Arrival" value="@Request["Arrival"]" readonly type="text" id="Arrival"  onchange="changedDate()">

       <input class="calendarr font" name="Departure" value="@Request["Departure"]" readonly type="text" id="Departure" >

             <select id="Rooms" name="Rooms" class="dropdown">
                 @for (int i = 1; i <= Model.MaximumNumberOfRooms; i++)
                     {
                        <option value="@i @Request["Rooms"]">@i</option>
                            }
                        </select>


                 <select id="Persons" name="Persons" class="dropdown">
                            @for (int j = 1; j <= Model.MaximumNumberOfAdultsPerRoom; j++)
                            {
                                <option value="@j  @Request["Persons"]">@j</option>
                            }
                        </select>                          
                <select id="Childrens" name="Childrens" class="dropdown">
                            @for (int c = 1; c <= Model.MaximumNumberOfChildrenPerRoom; c++)
                            {
                                <option value="@c @Request["Childrens"]">@c</option>
                            }
                        </select>

              <input type="submit" class="btns" value="Search" />

     }

HomeController中的以下代码。

 public class HomeController : Controller
    {
        SessionHelper mysession = new SessionHelper();
      
        [HttpPost]
        [ActionName("Index")]
        public ActionResult Index_Post()
        {                                            
            return View();
        }

        [HttpGet]
        [ActionName("Index")]
        public ActionResult Index_Get()
        {
            checkURL();
            pageload();
            string arrival = Request.Form["Arrival"];
            string Departure = Request.Form["Departure"];
            string rooms = Request.Form["Rooms"];
            string Persons = Request.Form["Persons"];
            string Childrens = Request.Form["Childrens"];
            return View(mysession);
        }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

ASP.MVC中没有“PostBack”这样的东西。但是,这是一个简单的方法:

  1. 由于您发送的参数不敏感或数据库更改,因此将表单设置为FormMethod.Get而不是FormMethod.Post更合适:

    pixel.pos
  2. 在Index_Get操作中,输入如下:

    open_memstream()
  3. 只要您的输入名称作为Index_Get参数中的参数存在,该参数将自动填充而无需调用Request对象。您还可以将参数类型从字符串更改为任何数据类型。但是,请注意,除非将它们定义为可为空,否则其他数据类型将不接受空值。

    1. 在您的html上,将每个字段值更改为ViewBag对象,例如:

      @using (Html.BeginForm("Index", "Home", FormMethod.Get))

    2. 希望这有助于:)