c# - asp.net MVC JavaScript 调用 Controller

标签 c# javascript asp.net-mvc asp.net-mvc-4 controller

我目前正在开发一个 ASP.Net MVC 项目。 我有一个 JavaScript 函数,它接受 XML 字符串作为输入。我想将其发送到 Controller 。

我使用 AJAX 请求来完成此操作,但在 Controller 中字符串为空。

查看:

        function save() {
            var xml = scheduler.toXML();
            alert(xml);

            var url = '@Url.Action("Save", "Home")'

            $.ajax({
                url: url,
                Type: "POST",
                dataType: 'json',
                async: false,
                data: xml,
                contentType: 'application/json; charset=utf-8',
                success: function (data) { alert("OK");},
                error: function (jqXHR, exception) {
                alert('Error message.');
            }
            });

Controller :

 public ActionResult Save(string xml)
    {
        Console.WriteLine(xml);

        W6ViewModel viewModel = new W6ViewModel();
        viewModel.engineers = db.W6ENGINEERS.ToList();
        viewModel.tasks = db.W6TASKS.ToList();
        viewModel.skills = db.W6TASKS_REQUIRED_SKILLS1.ToList();

        var engList = new List<object>();
        foreach (var engineer in viewModel.engineers)
        {
            engList.Add(new { key = engineer.ID, label = engineer.Name });
        }
        ViewBag.engineers = engList;

        return View("Index", viewModel);
    }

var xml = scheduler.toXML()

警报(xml):

enter image description here

错误代码(抱歉,文字墙):

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.QueryString value was detected from the client (xmlString=&quot;&lt;data&gt;&lt;event&gt;

最佳答案

像这样命名你的参数:

function save() {
        var xml = scheduler.toXML();
        alert(xml);

        var url = '@Url.Action("Save", "Home")';

        $.ajax({
            url: url,
            Type: "POST",
            dataType: 'json',
            async: false,
            data: { xml: xml},
            contentType: 'application/json; charset=utf-8',
            success: function (data) { alert("OK");},
            error: function (jqXHR, exception) {
            alert('Error message.');
        }
        });

同时将此标记放在 Controller 操作上方:

[ValidateInput(false)]

关于c# - asp.net MVC JavaScript 调用 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555614/

相关文章:

javascript - 在哪里使用该标志来通知 GWT 以避免混淆 Javascript?

c# - 如何在我的 ASP.Net MVC 5 应用程序的同一页面中编辑和删除 POST 请求

C# Lambda 表达式映射多个条件

c# - 当 Builder 被赋予抽象类时如何使用 AutoFixture 生成特定值

c# - .net 类 xml 属性创建多个命名空间

javascript - D3 指定基准/楼层的面积图

c# - 没有 IDynamicMetaObject 的 C# 中的动态?

javascript - 即使验证返回 false,表单仍会提交

asp.net-mvc - 为什么 HtmlHelpers 需要这个 HtmlHelper 助手的参数?

asp.net - 如何为 ASP.NET Web 应用程序实现自动错误/崩溃报告?