无法通过ViewBag在部分View的JQuery中发送参数。

时间:2012-09-17 05:21:17

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

我正在使用剃刀语法开发MVC3应用程序。我正在研究评论功能的部分课程。

我的代码是:

<script src="../../Scripts/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#AddCommentButton').click(function () {
            $.ajax({
                type: 'post',
                url: '/Comment/SaveComments',
                dataType: 'json',
                data:
                { 

                'comments': $('#Comment').val(), @ViewBag.EType, @ViewBag.EId
                 },

                   success: function (data) {

                    $("p.p12").append

                   $('.ShowComments').text('Hide Comments');

                }
            });
        });
    });
</script>

我正在尝试使用上面的jQuery中的ViewBag从View向控制器发送参数,但它无法正常工作。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

试试这样:

<script src="@Url.Content("~/Scripts/jquery.js")" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $('#AddCommentButton').click(function () {
            $.ajax({
                type: 'post',
                url: '@Url.Action("SaveComments", "Comment")',
                data: { 
                    comments: $('#Comment').val(), 
                    etype: @Html.Raw(Json.Encode(ViewBag.EType)), 
                    eid: @Html.Raw(Json.Encode(ViewBag.EId))
                },
                success: function (data) {
                    $("p.p12").append(data);
                    $('.ShowComments').text('Hide Comments');
                }
            });
        });
    });
</script>

和您的控制器操作:

[HttpPost]
public ActionResult SaveComments(string comments, string etype, string eid)
{
    ...
}

或定义视图模型:

public class SaveCommentViewModel
{
    public string Comments { get; set; }
    public string EType { get; set; }
    public string EId { get; set; }
}

然后:

[HttpPost]
public ActionResult SaveComments(SaveCommentViewModel model)
{
    ...
}