2016-08-23 88 views
0
<select id="TypeOfUser" name="typeOfUser" class="active text-normal"> 
    <option value="2" onclick="location.href='@(Url.Action("Index", "User", new { typeOfUser = 2}))'">CMS Users</option> 
    <option value="3" onclick="location.href='@(Url.Action("Index", "User", new { typeOfUser = 3}))'">Site Users</option> 
</select> 

在下拉菜单项目的选择我想打电话给我的操作方法与选择的值 -如何使用Razor视图

public async Task<IActionResult> Index([FromQuery] int typeOfUser = 2) 
{ 
    SearchUsersResponse searchUserResponse = await new SearchUsersHandler(_db).Handle(new SearchUsersCommandAsync 
    { 
     Type = typeOfUser 
    }); 

    return View("Index", searchUserResponse); 
} 

目前在下拉选择改变我不能呼吁下拉菜单选择操作方法调用操作方法。

+1

您已经使用JavaScript(你觉得呢'onclick'是) –

+1

AFAIK,选择元素将无法调用任何操作方法本身没有事件触发,你需要设置由JS onchange事件/ jQuery并提交更改后的值以将其作为控制器端的参数值传递。 –

回答

1

onclick将无法​​使用该选项。你可以做的是执行你的javascript代码,以重定向SELECT元素的onchange事件。

<select id="TypeOfUser" name="typeOfUser" class="active text-normal" 
             onchange="doIt(this,'@Url.Action("Index", "User")')"> 
    <option value="2" >CMS Users</option> 
    <option value="3">Site Users</option> 
</select> 

假设你有一个JavaScript方法,它有2个参数。第一个参数是对发生onchange事件的SELECT元素的引用。因此,您可以访问value属性以获取选定的选项值。

function doIt(item,baseUrl) { 
     window.location.href = baseUrl + '?typeOfUser=' + item.value; 
}