【问题标题】:Read HTML value from View in a Controller从控制器中的视图中读取 HTML 值
【发布时间】:2015-02-11 12:10:54
【问题描述】:

我正在使用 ASP.NET 和 MVC。

有一个包含一些字段的视图,然后我添加了一个 HTML 选择下拉菜单。我希望能够在不包含在相应模型中的情况下获取选择项的值;这可能吗?我可以参考页面上的 HTML 吗?我会使用javascript吗?不知道从哪里开始

【问题讨论】:

  • 什么意思是“我希望能够在不包含在相应模型中的情况下抓取选择项的值”?你想在你的服务器端代码中使用它吗?你想在前端用它做点什么吗?
  • 我想在服务器上用它做点什么
  • 用户将表​​单提交给控制器后,是否要访问下拉列表中的选定值?或者您是否尝试在用户提交之前使用 javascript 访问值?
  • 用户向控制器提交表单后,我想访问下拉菜单中选择的值吗?
  • @fifamaniac04 然后你需要在你的视图模型中为它​​创建一个属性。相关代码会帮助我们

标签: javascript html asp.net-mvc


【解决方案1】:

一旦表单被发布到服务器,您可以通过在 Request 对象中使用来访问控制器中的任何表单值,如下所示:

[HttpPost]
public ActionResult Edit()
{
    var value = Request["MyDropDown"];

    /* process and return */
} 

假设下拉菜单的名称属性为“MyDropDown”。

在 SO 上看到这个answer

当然,使用“视图模型”来表示提交到表单的数据是 MVC 的重要组成部分,所以我会考虑这种方法并确保它是正确的做事方式。

【讨论】:

  • 简单,不需要修改模型/视图。做我想做的事......唯一的请求是下拉的名字,而不是ID
【解决方案2】:

由于这是处理 MVC,我将继续介绍一种不同的方法..

在您的视图模型中,您将需要添加 2 个项目,1 个属性来存储您的选择列表的值,另一个来实际容纳您的选择列表中的项目。

查看模型

public class ViewModel 
{
    public String SelectListValue { get; set; }

    public List<SelectListItem> SelectListValues { get; set; }

    public ViewModel() 
    {
        SelectListValues = new List<SelectListItem>();
        SelectListValues.Add(new SelectListItem { Text = "Display Text" Value = "Some Value" });
    }
}

那么在你看来

查看

@Html.DropDownListFor(x => x.SelectListValue, SelectListValues, null)

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2022-01-09
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多