从select option标签中检索文本(而不是值)

时间:2016-03-14 17:08:58

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

我使用的是asp.net c#mvc4

我目前可以从我的视图中检索控制器中所选选项的值,但我还需要检索文本。我的视图和控制器看起来像这样:

查看:

<form method="post" action="myAction">
     <select name="sel">
          <option value="1" text="One">One</option>
          <option value="2" text="Two">Two</option>
     </select>
</form>

控制器:

public ActionResult myAction(int sel) 
{
     int selValue = sel;
}

这段代码适合我。但是,在我的控制器中,我想添加string selText=something以便我也有文本,代码看起来像:

public ActionResult myAction(int sel, string something) 
{
     int selValue = sel;
     string selText = something
}

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

一般情况下,您无法获取文本,因为表单仅发布了select的值。但是,您可以从服务器(在模型或ViewBag中)动态填充选择列表,当您收到带有值的帖子时 - 获取与该值对应的文本。

这是一种非常常见的模式,不需要任何解释。你永远不会发回文本,因为你不需要它。

无论如何这里是代码:

public ActionResult myAction(int sel) 
{ 
   int selValue = sel; 
   string text= yourRepository.GetById(sel)?.YourText; 
 }

答案 1 :(得分:1)

您可以使用分隔符将(值和文本)放入value属性。

<form method="post" action="myAction">
      <select name="sel">
          <option value="1|One">One</option>
          <option value="2|Two">Two</option>
     </select>
</form>

再次在控制器中将其分开。

public ActionResult myAction(string sel) 
{
    string[] selSplit = sel.Split('|');
    int selValue = int.Parse(selSplit[0]);
    string selText = selSplit[1];
}