簡體   English   中英

asp.net MVC JavaScript 調用控制器

[英]asp.net MVC JavaScript call to controller

我目前正在研究一個 ASP.Net MVC 項目。 我有一個 JavaScript 函數,它將 XML 字符串作為輸入。 我想把它發送給控制器。

我已經使用 AJAX 請求這樣做了,但在控制器中,字符串為空。

看法:

        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.');
            }
            });

控制器:

 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):

在此處輸入圖片說明

錯誤代碼(對不起,文字牆):

[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.');
        }
        });

還要將此標簽放在您的控制器操作上方:

[ValidateInput(false)]

請參閱以下ajax調用:

  $.ajax({
            url: '@Url.Content("~/myaccount/CheckDuplicateEmailAddress")',
            data: { "emailAddress": email },
            async: false,
            type: "post",
            success: success,
            error: error
        });

控制器動作如下。 你需要這樣發送參數:

data: { "emailAddress": email }

記住區分大小寫和雙引號:

public bool CheckDuplicateEmailAddress(string emailAddress)
    {
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM