【问题标题】:Controller method is not called by jQuery - MVCjQuery不调用控制器方法 - MVC
【发布时间】:2014-12-29 18:53:41
【问题描述】:

我正在尝试通过 jQuery 调用控制器方法,调用了 jQuery 函数但它没有调用控制器方法。 这是我的 jQuery 代码:

@{
  int year = DateTime.Today.Year;
}

    <script>
        var year = '@year';
        var url = '@Url.Action("Details", "Holidays")'; 
        var updateHolidays = function() {
            $('#year').text(year);
            $('#details').load(url, { id: year });
        } 
        $('#previous').click(function() {
            year--;
            updateHolidays();
        });
        $('#next').click(function () {
            year++;
            updateHolidays();
        });
    </script>

    @if (Session["LoggedUserName"] != null)
    {
        <table>
            <tr style="height:10px">
                <td>
                    <h2>Holiday Calandar</h2>
                </td>
                <td>
                    <input type="image" id="previous" value="submit" src="~/Images/left-arrow.png" style="width:30px" />
                </td>
                <td>
                    <h2>@year</h2>
                </td>
                <td>
                    <input type="image" id="next" value="submit" src="~/Images/right-arrow.png" style="width:30px"  />
                </td>
                <td>
                        <ul id="menu">
                        <li>@Html.ActionLink("Add Holiday", "Create", null, new { id = "lnkCreate" })</li>
                        </ul>
                </td>

            </tr>


        </table>
    }

这是我的控制器方法代码:

public ActionResult Details(int year)
        {
            var model = db.tbl_HolidayList.Where(h => Convert.ToDateTime(h.Holiday_date).Year == year);
            return PartialView(model);
        }

我尝试调试,但没有详细介绍方法。谁能告诉我哪里错了??

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    不是这个

    $('#details').load(url, { id: year });
    

    试试

    $('#details').load(url, { year: year });
    

    由于您在操作中的参数名称是Details(int year)

    另一个问题是你需要一个 id=details 的元素:

    <div id='details'></div>
    

    因为如果选择器没有找到任何元素,.load 将不会触发。

    【讨论】:

    • 我这样做了,但是年份计数增加或减少但方法没有调用
    • @UmmEHabibaSiddiqui 我发现了另一个问题并更新了答案
    • 我有一个带有 id 详细信息的 div,它有一个 gridview 来显示其中的数据。
    • 使用您的浏览器调试工具(通常在浏览器中按 F12 并且有一个“网络”选项卡)来验证是否正在发出 URL 请求并且就是您期望的 URL。
    • 是的,它是公开的,我通过将 [HttpPost] 放在 public ActionResult Details(int year) 方法上来解决问题。不过,您的回答对我有所帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多