Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从选择选项标记检索文本(非值)_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 从选择选项标记检索文本(非值)

C# 从选择选项标记检索文本(非值),c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我正在使用asp.NETMVC4 我当前可以从视图中检索控制器中所选选项的值,但还需要检索文本。我的视图和控制器如下所示: 视图: 这段代码对我有用。但是,在我的控制器中,我想添加字符串selText=something,这样我也有文本,代码如下所示: public ActionResult myAction(int sel, string something) { int selValue = sel; string selText = something } 有人能帮

我正在使用asp.NETMVC4

我当前可以从视图中检索控制器中所选选项的值,但还需要检索文本。我的视图和控制器如下所示:

视图:

这段代码对我有用。但是,在我的控制器中,我想添加字符串selText=something,这样我也有文本,代码如下所示:

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

有人能帮我吗?

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

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

无论如何,代码如下:

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

可以使用分隔符将值和文本放入value属性中

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

你的东西怎么了?我不知道应该是什么东西。int sel部分选择所选选项的值,这对我来说很好。如何从所选选项中选择文本而不是值?因此,如果要获取选项的内部文本,如果不在浏览器中引入一些javascript或其他组件,您将无法执行此操作。HTML表单提交仅包含输入控件的值。您可以尝试使用分隔符将值和文本放入值属性中。如下所示:value=1 | 1,然后在控制器中再次将其分开。@JennyO'Reilly有一个很好的建议,但您的方法仍然只接受一个字符串参数,OP必须将该参数拆分为适当的值。这比编写大量javascript要简单得多。我已经从上面的评论中得到了答案,但是你的建议听起来也很有趣。事实上,我正在从模型中的服务器动态生成列表。上面的代码只是一个示例。您能否详细说明如何使用此方法获取与值相对应的文本?public ActionResult myActionint sel{int selValue=sel;string text=yourRepository.GetByIdsel?.YourText;}您有另一个对DB的调用,但不会基于容易出错的分隔符拆分值。是,这是一个很好的解决方案。在控制器中使用类似于字典的内容,并将其传递给视图以动态构建选择列表。这样,您就可以通过调用myDictionary[sel]sel在本例中是一个int,在控制器的View和Action方法中使用它。
public ActionResult myAction(int sel) 
{ 
   int selValue = sel; 
   string text= yourRepository.GetById(sel)?.YourText; 
 }
<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];
}