onchange html 属性不会将模型 属性 传递给 js 函数

The onchange htmlattribute won't pass a model property to the js function

我想从局部视图的下拉列表中获取用户输入,并将其传递到索引页面中的 js 函数,以根据 QuestionType 属性 的值过滤出结果。 因此,视图模型如下所示:

public class TestQuestionModel
    {
        public Guid TestId { get; set; }

        public Guid QuestionId { get; set; }

        public string Id { get; set; }

        public string QuestionType { get; set; }
    }

razor 页面中的下拉列表如下所示:

@model ICollection<Lab.Quiz.BL.Services.TestCardService.Models.TestQuestionModel>
...    
@Html.DropDownList("QuestionType", new SelectListItem[]
                {
                    new SelectListItem() {Text = "Single Selection Question", Value = "SingleSelectionQuestion", Selected = true},
                    new SelectListItem() {Text = "Multiple Answers Question", Value = "MultipleAnswerQuestion"},
                    new SelectListItem() {Text = "Open Answer Question", Value = "OpenAnswerQuestion"},
                    new SelectListItem() {Text = "Program Code Question", Value = "ProgramCodeQuestion"}
                },
                    new
                    {
                        onchange = "filterQuestions('{@Model.FirstOrDefault()?.TestId.ToString()}', this.value)"
                    })

索引页上的函数如下所示:

function filterQuestions(testId, questionType) {
        alert("called");
        $.ajax({
            url: "Home/Filter",
            data: { testId: testId, questionType: questionType },
            type: 'GET',
            dataType: 'html',
            success: function (result) {
                $("#questionsDiv").html(result);
            }
        });

很遗憾,函数不会被调用。但是,如果我将函数更改为仅接受一个属性并相应地将函数调用更改为仅包含一个属性 (this.value),它将按预期工作。 关于如何从 @Html.DropdownList 不仅传递它的值,而且传递模型的 属性 有什么建议吗?

你可以试试这个,用+...+拆分数据:

onchange = "filterQuestions("+@Model.FirstOrDefault().TestId.ToString()+", this.value)"

结果: