阅读JQuery中的所有下拉框值

时间:2014-04-25 20:36:42

标签: javascript jquery html drop-down-menu

我在MVC 4视图中有一个下拉框。当下拉框中的值更改时,我想要读取所有选定的值。每个选择包含3个项目。第一个:Id,第二个:用户在表单上看到的值,第三个:是文件的路径。一切正常但我无法阅读TemplatePath。如何使用jquery读取用户选择的templatePath。

我知道如何读取id和所选值,但我似乎找不到阅读路径的方法。

我的控制器创建视图中使用的SelectList:

ViewBag.TemplateList = new SelectList(db.Templates.ToList(), "TemplateId", "TemplateTitle", "TemplatePath");

视图使用选择列表并填充下拉框:

@Html.DropDownListFor(model => model.TemplateId, ViewBag.TemplateList as IEnumerable<SelectListItem>, "-- No Template --", new { @id = "TemplateChoice"})

我有一个使用Jquery的javascript文件,所以当模板下拉框改变时,我想从下拉框中读取TemplatePath。

我的javascript文件如下:

$("document").ready(function () {

    $("#TemplateChoice").change(function () {
        var templateID = $("#TemplateChoice option:selected").val();
        var templateText = $("#TemplateChoice option:selected").text();

       //Here I need code that will read the TemplatePath
    });
 });

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

看起来您正试图在下拉列表中存储3个值,默认情况下只存储两个值。您可以使用数据属性为列表中的每个选项添加路径。查看this answer以获取设置和检索它们的示例。

答案 1 :(得分:0)

SelectList构造函数中没有第3个值。见docs

答案 2 :(得分:0)

你的问题在这里:

ViewBag.TemplateList = new SelectList(db.Templates.ToList(), "TemplateId", "TemplateTitle", "TemplatePath");

SelectList构造函数的第四个参数用于当前选定的值。 IE:

ViewBag.TemplateList = new SelectList(db.Templates.ToList(), "TemplateId", "TemplateTitle", db.Templates.First());

默认情况下,这将选择“模板”列表中的第一个项目。这不是用于SelectListItems上的属性,就像您在此处指定的那样。您可以编写一个扩展方法,为选择列表项指定附加属性。但是你将无法使用SelectList和DropDownListFor

完成此任务