Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC 4基于下拉列表更改多个显示字段以供选择_Javascript_C#_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript MVC 4基于下拉列表更改多个显示字段以供选择

Javascript MVC 4基于下拉列表更改多个显示字段以供选择,javascript,c#,jquery,asp.net-mvc,Javascript,C#,Jquery,Asp.net Mvc,首先,与上述问题几乎相同,但解决方案不适用于此问题 我有一个网页,将举行一个下拉列表。选择后,它将根据选择更改显示字段 视图中的javascript是: <script type="text/javascript"> $(function(){ $('#courseName').on('change', function () { var courseID = $(this).val(); var student

首先,与上述问题几乎相同,但解决方案不适用于此问题

我有一个网页,将举行一个下拉列表。选择后,它将根据选择更改显示字段

视图中的javascript是:

<script type="text/javascript">
    $(function(){
        $('#courseName').on('change', function () {
            var courseID = $(this).val();
            var studentID = '@ViewBag.StudentID';
            $.ajax({
                url: '@Url.Action("FillCourseInfo", "Student")',
                data: {StudentID: studentID, CourseID: courseID},
                type: 'get'
            }).done(function(data){
                $('#courseStartDate').text(data.courseStartDate); 
                $('#courseEndDate').text(data.courseEndDate);
                $('#projectName').text(data.projectName);
                $('#graduated').text(data.graduated);
            });
        });
    });

</script>

目前javascript没有被命中,或者我的方法没有被调用。

使用以下功能更改javascript函数:

$("#CourseName").change(function () {

            var courseID = $(this).val();
            $.ajax({
                type: 'POST',
                url: '@Url.Action("FillCourseInfo","Student")', // we are calling json method
                dataType: 'json',
                data: { StudentID: @ViewBag.studentID, CourseID, courseID  },


                success: function (ret) {
            $('#Dates').val(ret.courseDates); 
                    $('#Project').val(ret.projectName);
                    $('#Graduated').val(ret.graduated);

                },
                error: function (ex) {
                    //alert('Failed to retrieve states.' + ex);
                }
            });

            return false;
        });
使用以下功能更改控制器功能

public JsonResult FillCourseInfo(int StudentID, int CourseID)
{
     var ret = (from e in db.Enrollments 
               join c in db.Courses on e.CourseID equals c.CourseID
               where e.StudentID == StudentID && e.CourseID == CourseID
               select new StudentCourseDetails
               {
                   courseDates = c.CourseStartDate.ToString() + " " + c.CourseEndDate.ToString(),
                   projectName = e.Project.ProjectTitle,
                   graduated = e.Graduated

               });
    return Json(ret);
}

您正在做的一件事是不返回FillCourseInfo操作的单个结果

这意味着您的json结果是StudentCourseDetails的列表。您必须使用$'Dates'。valdata[0]。courseDates;获取你的价值观

或者,如果您只需要一个值,则可以在linq查询结束时使用.FirstOrDefault

var ret = (from e in db.Enrollments 
               join c in db.Courses on e.CourseID equals c.CourseID
               where e.StudentID == StudentID && e.CourseID == CourseID
               select new StudentCourseDetails
               {
                   courseDates = c.CourseStartDate.ToString() + " " + c.CourseEndDate.ToString(),
                   projectName = e.Project.ProjectTitle,
                   graduated = e.Graduated

               }).FirstOrDefault();
我为您创建了另一个.NET小提琴

要在linq查询中使用ToString,请将结果转换为列表,然后构建json

 var ret = (from e in db.Enrollments
                   join c in db.Courses on e.CourseID equals c.CourseID
                   where e.StudentID == StudentID && e.CourseID == CourseID
                   select new
                   {
                       courseStartDate = c.CourseStartDate,
                       courseEndDate = c.CourseEndDate,
                       projectName = e.Project.ProjectTitle,
                       graduated = e.Graduated

                   }).ToList()
                   .Select(a => new StudentCourseDetails() {
                       courseDates = a.courseStartDate.ToString() + " " + a.courseEndDate.ToString(),
                       projectName = a.projectName,
                       graduated = a.graduated
                   }).FirstOrDefault();

两个快速问题-jquery中呈现的url是什么?你能粘贴吗?还要设置contentType:'application/json'并试一试。处理错误事件并查看您得到的错误。如果下拉列表代码正确,则需要在JQuery选择器$'courseName'中使用相同的大小写。在'change'上,函数{如果你的字面意思是从$'CourseName'转到$'CourseName',那么这不起作用,因为在你的linq查询中,你可以使用.toString,而我不能。这是因为在我的示例中,它是从列表中选择的,而不是从IEnumerableYeah中选择的。注意到了这一点。因此这些字段不需要编辑。我尝试使用DisplayFor但这不起作用,即使脚本正在运行,也不会出现任何问题。是否有我刚刚缺少的另一个可供使用的脚本?是否需要将值传递回控制器?否。严格来说,用于查看学生参加的课程的详细信息。因此,请选择一个课程并显示值。我的意思是,我可以禁用teXTbox,但我认为没有文本框的显示更干净
var ret = (from e in db.Enrollments 
               join c in db.Courses on e.CourseID equals c.CourseID
               where e.StudentID == StudentID && e.CourseID == CourseID
               select new StudentCourseDetails
               {
                   courseDates = c.CourseStartDate.ToString() + " " + c.CourseEndDate.ToString(),
                   projectName = e.Project.ProjectTitle,
                   graduated = e.Graduated

               }).FirstOrDefault();
 var ret = (from e in db.Enrollments
                   join c in db.Courses on e.CourseID equals c.CourseID
                   where e.StudentID == StudentID && e.CourseID == CourseID
                   select new
                   {
                       courseStartDate = c.CourseStartDate,
                       courseEndDate = c.CourseEndDate,
                       projectName = e.Project.ProjectTitle,
                       graduated = e.Graduated

                   }).ToList()
                   .Select(a => new StudentCourseDetails() {
                       courseDates = a.courseStartDate.ToString() + " " + a.courseEndDate.ToString(),
                       projectName = a.projectName,
                       graduated = a.graduated
                   }).FirstOrDefault();