【问题标题】:c# - How to save form data after submittedc# - 提交后如何保存表单数据
【发布时间】:2016-03-08 05:29:27
【问题描述】:

我有一堆选择标签,即使在提交表单后我也想保存它们的选项值。目前,该值在提交后重置为最高值。

我尝试了以下方法,但它不起作用!它选择此代码中 for 循环的最后一个选项。

<select class="form-control" id="selYear" name="selYear">
   @for (var i = 2016; i > 1999; i--){            
      if(IsPost){
       <option value="@i" selected='@(Request.Form["selYear"].Equals(i.ToString()) ? "selected" : "")'>@i</option>
      } 
      else {
       <option value="@i" >@i</option>
      }
    }
</select>

有人对此有解决方案吗?请提供一些示例代码/示例。

【问题讨论】:

  • 你是什么意思拯救他们?你可以直接返回Controller,将Model数据发送到返回的ActionView。
  • 我不希望在提交后重置该值。例如,在这种形式中,页面加载时的默认值为 2016。但是如果我选择 2014 并提交表单,我希望值保持 2014。在这种情况下它会重置回 2016。你能告诉我一个如何使用控制器和模型来做到这一点的例子吗? @艾曾
  • 你为什么不使用DropDownList
  • 不要手动生成html。使用@Html.DropDownListFor() 强绑定到您的模型属性。建议您访问 MVC 站点并通过教程学习 MVC 的基础知识
  • 如果您只想发布数据而不更新 UI,我建议您查看 web api。

标签: c# html asp.net-mvc


【解决方案1】:

您实际上选择了每一行,而浏览器决定使用最后一行。将该行修改为如下所示:

<option value="@i" @(Request.Form["selYear"].Equals(i.ToString()) ?  
                        "selected" : "")>@i</option>

【讨论】:

  • 他应该使用Html.DropDownListFor()
  • 这确实有效!我认为简写 if 语句应该始终位于“=”符号的右侧,因为它返回一个应该分配给某物的值。不过,这对我有用! @RudyTheHunter 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多