2013-04-11 42 views
4

我有以下ViewResult()填充模型(持有两个下拉列表),然后发送到强类型的视图()。 通知我如何添加一个新的“ALL --- VIEW ---“与标识两个下拉列表值是一个Guid.Empty.如何检查客户端下拉的Guid.Empty ID

[HttpGet] 
public ViewResult ManageUsers() 
{ 
    var applicationList = _facade.Value.GetApplications().OrderBy(a => a.Name).ToList(); 
    applicationList.Add(new Application() { Id = Guid.Empty, Name = "---VIEW ALL---" }); 

    var roleList = _facade.Value.GetRoles(applicationList.First().Id).OrderBy(a => a.Name).ToList(); 
    roleList.Add(new Role() { Id = Guid.Empty, Name = "---VIEW ALL---" }); 

    var model = new ManageUsersModel(); 
    model.ApplicationList = new SelectList(applicationList, "Id", "Name", applicationList.First().Id); 
    model.RoleList = new SelectList(roleList, "Id", "Name"); 

    return View(model); 
} 

一旦视图()内我创建一个jquery .change()事件第一个下拉列表,我希望检测选定的值。

根据选定的值,我需要采取不同的行动。例如,如果选择了Guid.Empty值,那么做到这一点......如果没有,那么到...

到目前为止,我有在.change()事件中的代码看起来是这样的:

$('#ApplicationId').change(function() { 
    if ($(this).val() === "00000000-0000-0000-0000-000000000000") { 
     alert("aaa"); 
    } 
    else { 
     alert("xxx"); 
    } 
}); 

代码工作但我发现它丑陋检查Guid.Empty我这样做的方式。

有没有人有不同的/更好的方法来实现这一目标?

在此先感谢!

真诚 Vlince

PS:由于这是一个多语言的应用程序,我无法使用下拉式的selected text为IF(...)进行比较。

回答

0

我假设Model.ApplicationList和Model.RoleList是一种列表,如List<SelectListItem>而不是IEnumerable。如果是这样,为什么不在创建SelectList时使用空白字符串“--- View All ---”,并使用空字符串作为值。

[HttpGet] 
public ViewResult ManageUsers() 
{ 
    var applicationList = _facade.Value.GetApplications().OrderBy(a => a.Name).ToList(); 
    var roleList = _facade.Value.GetRoles(applicationList.First().Id).OrderBy(a => a.Name).ToList(); 

    var model = new ManageUsersModel(); 
    model.ApplicationList = new SelectList(applicationList, "Id", "Name", applicationList.First().Id); 
    model.RoleList = new SelectList(roleList, "Id", "Name"); 

    var defaultChoice = new SelectListItem("", "---VIEW ALL---") 
    model.ApplicationList.InsertAt(0, defaultChoice); 
    model.RoleList.InsertAt(0, defaultChoice); 
    return View(model); 
} 

而JavaScript

$('#ApplicationId').change(function() { 
    if ($(this).val() === "") { 
     alert("aaa"); 
    } 
    else { 
     alert("xxx"); 
    } 
}); 
+0

不幸的是,Model.ApplicationList和Model.RoleList不作为类型列表<>也IEnumerable的。它们被输入为SelectList。也许我需要改变两种属性的类型,以实现你所展示的内容。我会去改变。我喜欢你的答案,简单而聪明!谢谢。 – Vlince 2013-04-11 16:01:14