【问题标题】:How to pass string value from a view via Jquery.ajax() to ASP.NET MVC controller如何通过 Jquery.ajax() 将字符串值从视图传递到 ASP.NET MVC 控制器
【发布时间】:2016-08-20 16:39:39
【问题描述】:

我认为有一个函数,如下所示:

function doIncriment() {
            var v1 = @ViewBag.CountNumber + 1;
            var v2 = @int.Parse(Request.QueryString["idForAnswer"]);
            var v3 = @int.Parse(Request.QueryString["View"]);
            var v5 = @int.Parse(Request.QueryString["answerNumber"]);
            var v6 = @Request.QueryString["title"];
            jQuery.ajax({
                url: '@Url.Action("pp", "Questions")',
                method: "POST",
                cache: false,
                data: { votingUp : v1, questionId : v2 , viewNumber : v3, numberOfAnswer : v5 , titleString : v6 }
            }).done(function (d) {
                jQuery("#lblResult").text(d);
            });
        }

我的控制器代码是这样的:

[HttpPost]
public string pp(string votingUp, int questionId, int viewNumber, int numberOfAnswer, string titleString, [Bind(Include = "ID,Vote,Answer1,View,Title,Question,Date")] Questions questions)
            {
                questions.ID = questionId;
                questions.Vote = int.Parse(votingUp);
                questions.View = viewNumber;
                questions.Date = DateTime.Parse("2016-08-10 23:39:33.000");
                questions.Answer1 = numberOfAnswer;
                questions.Title = titleString.ToString();
                questions.Question = "test test";
                db.Entry(questions).State = EntityState.Modified;
                db.SaveChanges();
                return (votingUp.ToString());
            }

int 值工作正常。但是每当我尝试传递任何字符串或日期时间数据时,ajax 调用都没有响应。如何将这些值从我的 ajax 函数传递到控制器。

【问题讨论】:

    标签: c# jquery asp.net ajax asp.net-mvc


    【解决方案1】:

    如果您要发送字符串值,请确保您的方法参数也是string 类型。目前,titleString 参数为 int

    [HttpPost]
    public string pp(string votingUp, int questionId, int viewNumber, int numberOfAnswer, 
       string titleString, [Bind(Include = "ID,Vote,Answer1,View,Title,
                                                          Question,Date")] Questions questions)
    {
       // to do : Return something
    }
    

    我还建议您确保使用正确的数据类型。如果您要发送数值(例如:votingUp),则无需先使用字符串并将其转换回来。您可以直接使用 int 类型作为参数类型,避免以后进行强制转换

    [HttpPost]
    public string pp(int votingUp, int questionId, int viewNumber, int numberOfAnswer, 
       string titleString,
           [Bind(Include = "ID,Vote,Answer1,View,Title,Question,Date")] Questions questions)
    {
      // to do : Return something
    }
    

    编辑:正如评论中提到的 mmushtaq,您应该将 @Request.QueryString["title"] 的值括在引号中,以便将其作为字符串值存储在变量 v6

    var v6 = '@Request.QueryString["title"]';
    

    【讨论】:

    • 投票与投票相关联。我认为,这不是问题。
    • 是的。请参阅更新的答案。您的 titleString 参数类型错误!
    • 对不起,我的错误。它仍然无法正常工作。代码已更新。
    • 将标题用引号括起来,例如var v6 = '@Request.QueryString["title"]';
    • 谢谢@mmushtaq。我错过了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2016-12-28
    相关资源
    最近更新 更多