6

我有以下ViewResult()填充模型(包含两个下拉列表),然后将其发送到强类型 View()。请注意我如何在两个下拉列表中添加一个新的“<em>---VIEW ALL---”值,IDGuid.Empty.

[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);
}

一旦进入 View() 我jquery .change()为第一个下拉菜单创建一个事件,我希望检测所选值。

根据选择的值,我需要采取不同的行动。例如,如果Guid.Empty选择了该值,则执行此操作...如果没有,则执行此操作...</p>

到目前为止,我在 .change() 事件中的代码如下所示:

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

该代码有效,但我发现检查我的操作方式很难看Guid.Empty

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

提前致谢!

真诚的

PS:由于这将是一个多语言应用程序,我不能使用selected text下拉菜单的 if(...) 比较。

4

1 回答 1

0

我假设 Model.ApplicationList 和 Model.RoleList 是 List 的一种类型, List<SelectListItem>而不是 IEnumerable。如果是这样,为什么不在创建 SelectList 并使用空字符串作为值时附加空的“---查看全部---”。

[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");
    }
});
于 2013-04-11T15:42:52.723 回答