Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
在jQuery中执行c#代码_C#_Jquery_Asp.net Mvc - Fatal编程技术网

在jQuery中执行c#代码

在jQuery中执行c#代码,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我有一个返回日期列表的模型函数。在我看来,我不想将类似的代码复制到jQuery中以填充下拉列表 <script src="/Bootstrap_Sufee/assets/js/vendor/jquery-2.1.4.min.js"></script> <script type="text/javascript">$(document).ready(function() { $("#attendanceReportType").change(functi

我有一个返回日期列表的模型函数。在我看来,我不想将类似的代码复制到jQuery中以填充下拉列表

<script src="/Bootstrap_Sufee/assets/js/vendor/jquery-2.1.4.min.js"></script>
<script type="text/javascript">$(document).ready(function() {
    $("#attendanceReportType").change(function() {
        if ($("#attendanceReportType").val() == "Class Monthly") {
            $("#attendanceReportYear").empty();
            $("#attendanceReportYear").append("<option>May 2018</option>");
            $("#attendanceReportYear").append("<option>April 2018</option>");
            $("#attendanceReportYear").append("<option>March 2018</option>");
    });
});</script>

jQuery能否执行它在C#中的模型函数并存储日期列表

public List<string> GetAvailableDateInStrings()
{
    List<string> dateList = new List<string>();
    foreach(Year year in this.m_years)
    {
        foreach(Month month in year.GetMonths())
        {
            string monthString = month.MonthInEnum.ToString() + " " + year.CalendarYear.ToString();
            if(year.CalendarYear == this.m_cutOffYear && month.MonthInYear <= this.m_cutOffMonth)
            {
                dateList.Add(monthString);
            }
            else if(year.CalendarYear < this.m_cutOffYear)
            {
                dateList.Add(monthString);
            }
        }
    }
    return dateList;
}
public List GetAvailableDateInStrings()
{
列表日期列表=新列表();
foreach(本年中的年份。m_年)
{
foreach(年中的月。GetMonths())
{
字符串monthString=month.MonthInEnum.ToString()+“”+year.CalendarYear.ToString();

如果(year.CalendarYear==this.m_cutOffYear&&month.MonthInYear解决此问题的最佳方法是使用ajax

 public JsonResult GetAvailableDateInStrings()
    {
        List<string> dateList = new List<string>();
        foreach (Year year in this.m_years)
        {
            foreach (Month month in year.GetMonths())
            {
                string monthString = month.MonthInEnum.ToString() + " " + year.CalendarYear.ToString();
                if (year.CalendarYear == this.m_cutOffYear && month.MonthInYear <= this.m_cutOffMonth)
                {
                    dateList.Add(monthString);
                }
                else if (year.CalendarYear < this.m_cutOffYear)
                {
                    dateList.Add(monthString);
                }
            }
        }
        return Json(dateList);
    }
public JsonResult GetAvailableDateInStrings()
{
列表日期列表=新列表();
foreach(本年中的年份。m_年)
{
foreach(年中的月。GetMonths())
{
字符串monthString=month.MonthInEnum.ToString()+“”+year.CalendarYear.ToString();

如果(year.CalendarYear==this.m_cutOffYear&&month.MonthInYearAjax是可能的,正如另一个答案告诉您的。但是有一个更简单的解决方案:使用
ViewBag
在视图中生成所需的代码

在控制器操作中

ViewBag.MyDateList = myListOfDates;
在您看来

$("#attendanceReportType").change(function() {
    if ($("#attendanceReportType").val() == "Class Monthly") {
        $("#attendanceReportYear").empty();

        @foreach (var myDate in ViewBag.MyDateList)
        {
            $("#attendanceReportYear").append("<option>@myDate.ToString("MMMM yyyy")</option>");
        }
    }
});
$(“#attendanceReportType”).change(函数(){
if($(“#attendanceReportType”).val()=“班级每月”){
$(“#AttendenceReportYear”).empty();
@foreach(ViewBag.MyDateList中的变量myDate)
{
$(“#attendenceeportyear”)。追加(@myDate.ToString(“MMMM-yyyy”);
}
}
});

这将生成所需的jQuery代码,而无需您自己复制/粘贴它。

只需执行一个操作,返回GetAvailableDateInStrings函数的JsonResult。然后让jQuery调用该操作并遍历它返回的Json集合,以填充您的选择。“jQuery能否执行它在C#中的模型函数”…如果你通过一个动作方法公开它,那么是的。这种事情就是AJAX的用途。C#函数必须是一个控制器动作?事实上我对web开发还不熟悉,我非常感谢你的回答。)@KWCham。是的,应该是。如果您在任何其他类中有此方法,那么您应该在控制器中创建任何其他方法,这些方法将通过Ajax调用。哦,c#代码可以直接在jQuery中执行?我是web开发新手,非常感谢您的回答。:)@KWCham:不是直接在jQuery中。相反,视图是使用Razor构建的,Razor会为您生成网页。生成的页面会发送到浏览器,浏览器会在页面上执行Javascript/jQuery(可能包括您在Razor中生成的特定脚本)。您可以使用
@foreach
之类的东西来影响Razor的生成过程,这意味着您可以迭代生成部分网页内容。这可以是HTML、javascript、jQuery等等,其实并不重要。请将Razor视为高级网页HTML字符串。格式变体,因为它本质上就是这样做的。@KWCham:Ju需要明确的是:控制器执行该操作。然后控制器告诉Razor呈现一个视图。Razor呈现该视图,实际上只是创建网页的HTML(字符串).MVC将该字符串发送到发送web请求的浏览器。浏览器随后相应地呈现页面,并在页面上执行任何JavaScript。Razor在web服务上运行;jQuery在客户端浏览器中运行。从字面意义上讲,一个不在另一个中运行。它们甚至不在同一台机器上运行(服务器与用户的计算机)在这种情况下,如果我理解正确,上面的jQuery代码在客户端执行,当它到达c#code时,它向服务器发出另一个请求以执行c#code,然后服务器将结果发送回jQuery发送请求的位置?@KWCham每个新请求都会创建一个新的网页,该网页由它自己运行。因此,是的,jQuery可以导致web请求uest返回一个新页面,jQuery将在该页面上执行,但它将不再是以前的页面。有更复杂的方法解决这个问题,但这超出了问题的范围。我建议看一本MVC教程,因为这是MVC操作的核心