C# .net mvc选定项事件的选择列表句柄

C# .net mvc选定项事件的选择列表句柄,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,我对网络mvc这件事很陌生。为了理解我想做什么,我将举一个例子 示例 我有一个包含数据的客户端列表,在我看来,我使用了一个和一个foreach,它遍历所有客户端以显示数据。我想做的是,当用户选择一个客户机名称时,他会被重定向到另一个页面,该页面会将客户机名称作为一个参数&用它做一些事情 我试过这个,但我被困在一个部分 <select> @foreach (var item in Model.clients) { <option>

我对网络mvc这件事很陌生。为了理解我想做什么,我将举一个例子
示例
我有一个包含数据的客户端列表,在我看来,我使用了一个
和一个
foreach
,它遍历所有客户端以显示数据。我想做的是,当用户选择一个客户机名称时,他会被重定向到另一个页面,该页面会将客户机名称作为一个参数&用它做一些事情
我试过这个,但我被困在一个部分

<select>
    @foreach (var item in Model.clients)
    {
        <option>
            @Html.Encode(item.name)
        </option>
    }
</select>
我尝试了两个列表,由@Shyui提出的一个更容易,但我想尝试与这一个东西

<select id="clients_list" onchange="Fct(this.value)">
    <option class="placeholder" selected disabled value="-1">Select Name</option> <!-- Can't be selected -->
    @foreach (var item in Model.clients)
    {
        <option value="@item.ID">
            @Html.Encode(item.name)
        </option>
    }
    <option value="0">New Client</option>
</select>

选择名称
@foreach(Model.clients中的var项)
{
@Html.Encode(item.name)
}
新客户

收听下拉列表的更改事件,获取所选选项并将用户重定向到下一个操作

<select id="Clients">
    @foreach (var item in Model.clients)
    {
       <option value="@item.name">@Html.Encode(item.name)</option>
    }
</select>
我正在使用
Url.Action
helper方法生成操作方法的正确相对路径。如果您的代码在razor视图中,这将起作用。但是,如果它位于外部js文件中,请尝试中介绍的解决方案

假设ClientsController中的
详细信息
操作方法接受客户端名称

public ActionResult Details(string clientName)
{
  // to do : Return something
}

您还可以考虑使用HTML帮助器方法,如“代码> HTML.DROPPDROMLIST/CODE >生成下拉元素,而不是执行Frace.

@Html.DropDownList("Clients",new SelectList(Model.clients, "name", "name"))

您也可以考虑传递唯一的客户端“代码> ID <代码>(数字)而不是客户端名称。某些浏览器中的查询字符串值长度存在限制。

如何触发重定向?在用户选择了一个客户端之后,它会点击一个按钮,或者通过JavaScript实现?你的问题有点过于宽泛,无法给出一个明确的解决方案,但我可以给你一些提示。由于您想进入B页,您将
提交该表单。您是否有一个
表单中的控件
,并在B页执行操作?如果您想处理列表,可以使用javascript触发列表的submit
onchange
。@Crowcoder我可以在表单submit上执行,但我希望在用户选择item@IKeepForgettingAccsMail,如果将列表的
更改为
表单,则可以提交。提交
。但是如果你不需要你的整个模型,按照Shyju的建议去做。谢谢你,但是你怎么称呼jquery脚本呢?我练习过一次jquery,但没有使用.net。它在视图页面中吗?您可以将该脚本放在视图中(在@section Scripts块中)或者一个外部js文件。我已经按照您显示的方式完成了操作,但是当我在列表中选择一个项目时,脚本没有被触发,我将脚本放置在脚本部分并检查您提供的链接我是否遗漏了什么?检查您的浏览器控制台是否有脚本错误。此外,您还需要将页面级脚本放在脚本部分中,您应该有一个脚本的RenderSection,如回答中所述。出现了一个错误&我将其更改为javascript函数,并通过
警报(“msg”)检查了该函数的工作情况
&然后将其更改为按我的意图工作,我将在视图(或重要部分)中发布我的代码。谢谢你所做的一切
public ActionResult Details(string clientName)
{
  // to do : Return something
}
@Html.DropDownList("Clients",new SelectList(Model.clients, "name", "name"))