2013-04-11 44 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