使用jQuery发布到控制器

时间:2011-09-21 21:44:47

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

在阅读了一些信息后,我认为这应该有效。调用JS函数并且jQuery动画正在旋转,但操作未发布到。我也希望从文本输入提供startDate和endDate,但现在甚至硬编码都不起作用。感谢大家!

控制器:

public class NewsController : Controller
{
    [HttpPost]
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search)
    {
    }
}

查看:

@using (Html.BeginForm())
{
    <a href="#" id="go_button">...</a>
}
<script type="text/javascript">
$('#go_button').click(function () {
        $.post("/News/Search", { startDate: 'start', endDate: 'end'});
});

2 个答案:

答案 0 :(得分:0)

确保脚本位于DOM中的锚点之后或包含在document.ready中:

$(function() {
    $('#go_button').click(function () {
        var url = '@Url.Action("Search", "News")';
        $.post(url, { startDate: 'start', endDate: 'end' }, function() {
            alert('success');
        });
        return false;
    });
});

这应该有用,至少应该调用你的动作。这个动作做了什么,无论是抛出异常还是其他东西都是另一回事,但至少你应该进入它并正确分配startDateendDate参数:

public class NewsController : Controller
{
    [HttpPost]
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search)
    {
        return Json(new { success = true });
    }
}

答案 1 :(得分:0)

$ .post只会将请求发布到服务器 - 它不会自动用您的视图更新您的页面。

您需要包含一个成功函数,然后使用该函数将View插入DOM。

e.g。

在jquery

中尝试这样的事情
$(function() {
    $('#go_button').click(function () {
        var url = '@Url.Action("Search", "News")';
        $.post(url, { startDate: 'start', endDate: 'end' }, function() {
            $('#result').html(data);
        });
        return false;
    });
});

这将发布到您的操作并将返回的视图放在ID为“result”的元素中。

如果您没有要包含布局,则应该让您的操作返回PartialView。