ASP.NET MVC.如何通过Ajax视图返回修改



我对ajax有问题。这是代码。

模型

public class ViewModel
{
    public long requestedVar { get; set; }
    public string ReturnedDescription { get; set; }
}

查看名称:addNewinfo

   <head>
   <script>
    $.datepicker.regional['ru'] = {
            closeText: "Закрыть",
            prevText: "&#x3C;Пред",
            nextText: "След&#x3E;",
            currentText: "Сегодня",
            monthNames: [
                "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
                "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
            ],
            monthNamesShort: [
                "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
                "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
            ],
            dayNames: ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"],
            dayNamesShort: ["вск", "пнд", "втр", "срд", "чтв", "птн", "сбт"],
            dayNamesMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
            weekHeader: "Нед",
            dateFormat: "dd.mm.yy",
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: ""
        };
    </script>
    <script>
    var GlobalVar1=0;
    $("#dropdownlist1").change(function getID() {
    <some code>
    GlobalVar1 = selectedValue;
    alert(GlobalVar1);
    $.ajax({
        url: "@Url.Action("myMethod1", "Home")",
        type: 'POST',
        async: false,
        data: { requestedVar : GlobalVar1},
        success: function (data) {
            alert('OK');
            $("html").html(result);
        },  
        error: function (error) {
            alert('error');
        }
    });
});
   </script>
   </head>
   <body>
   <div>
        @Html.DropDownListFor(m => m.SelectedDirectionID, new SelectList(Model.DirectionList.Select(x => new SelectListItem { Value = x.Id.ToString(), Text = x.DirectionName }), "Value", "Text"),"", new { @class = "Duration", required = "required", id="dropdownlist1" })
        @Html.ActionLink("+", "_AddDirection", "Home", null, new { @class = "modal-link btn btn-success"})
        <div>@Html.DisplayName("Choosen description")</div>
        <div>@Html.TextBoxFor(m => m.ReturnedDescription, new { @class = "Duration", disabled = "disabled" })</div>
    </div>
    </body>

控制器:

    [HttpPost]
    public System.Web.Mvc.ActionResult myMethod1(ViewModel m)
    {
        var db = new DB();
        ModelState.Clear();
        var returnedVal = db.GetDesctiption(m.requestedVar).First();
        m.ReturnedDescription = returnedVal.Description;
        var vm = DataFactory.Refresh();
        vm.ReturnedDescription = m.ReturnedDescription;
        return View("AddNewInfo", vm);
    }

update

现在一切工作方式:Ajax成功地发送了一个带有数据的后重点,我的控制器返回视图,此视图在浏览器中显示,但是返回的视图不包含任何JS脚本。

是问题:如何也使用JS脚本返回浏览器并返回删除值?

步骤i

更改您的动作方法,然后返回 JSON结果

    [HttpPost]
    public JsonResult myMethod1(ViewModel m)
    {
        var db = new DB();
        ModelState.Clear();
        var returnedVal = db.GetDesctiption(m.requestedVar).First();
        m.ReturnedDescription = returnedVal.Description;
        var vm = DataFactory.Refresh();
        vm.ReturnedDescription = m.ReturnedDescription;
        return Json(vm,JsonRequestBehavior.AllowGet);
    }

步骤II

更改您的AJAX成功选项。

$.ajax({
        url: "@Url.Action("myMethod1", "Home")",
        type: 'POST',
        async: false,
        data: { requestedVar : GlobalVar1},
        success: function (data) {
           if(data.ReturnedDescription){
              $('#ReturnedDescription').val(data.ReturnedDescription); // This line to be noted.
           }
           // alert("Sending complete");
        },  
        error: function (error) {
            alert('error');
        }
    });

也不要忘记将代码保留在$(文档)中。

用于使用MVC模式恢复数据,您可以从控制器返回JSON(例如)从控制器键入数据,因为在通过AJAX恢复它之后。

您必须使用:

return Json(vm, JsonRequestBehavior.AllowGet);

而不是:

return View("AddNewInfo", vm);

完成的代码将是:

[HttpPost]
public JsonResult myMethod1(ViewModel m)
{
    var db = new DB();
    ModelState.Clear();
    var returnedVal = db.GetDesctiption(m.requestedVar).First();
    m.ReturnedDescription = returnedVal.Description;
    var vm = DataFactory.Refresh();
    vm.ReturnedDescription = m.ReturnedDescription;
    return Json(vm,JsonRequestBehavior.AllowGet);
}

关心您使用此代码的方法。应该是您通过AJAX调用请求数据的哪一个。

在旁边,我将在JSON类型中从Ajax呼叫发送数据:

data: JSON.stringify(dataToSend)

完成的代码将是(如果您通过JSON类型发送数据,则将通过字符串类型恢复):

<script>
    var GlobalVar1=0;
    $("#dropdownlist1").change(function getID() {
    <some code>
    GlobalVar1 = selectedValue;
    alert(GlobalVar1);
    $(document).ready(function () {
        $.ajax({
            url: "@Url.Action("myMethod1", "Home")",
            type: 'POST',
            async: false,
            success: function (data) {
                alert("Sending complete");
            },  
            error: function (error) {
                alert('error');
            }
        });
    });
};

最新更新