Jquery NETMVC。如何通过ajax视图返回修改的

Jquery NETMVC。如何通过ajax视图返回修改的,jquery,asp.net,ajax,asp.net-mvc,model-view-controller,Jquery,Asp.net,Ajax,Asp.net Mvc,Model View Controller,我对ajax有问题。 这是代码 型号 public class ViewModel { public long requestedVar { get; set; } public string ReturnedDescription { get; set; } } 查看 姓名:AddNewInfo <head> <script> $.datepicker.regional['ru'] = { closeTex

我对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>
更新

现在如何运作: ajax成功地发送了一个POST请求,其中包含数据、my controller返回视图,该视图显示在浏览器中,但返回的视图不包含任何JS脚本

问题是:
如何使用JS脚本和ReturnedDescription值返回到浏览器的完整视图?

对于使用MVC模式通过Ajax恢复数据,您应该从控制器返回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类型发送数据,您也将按字符串类型恢复数据):


var GlobalVar1=0;
$(“#dropdownlist1”).change(函数getID(){
GlobalVar1=所选值;
警报(全球警报1);
$(文档).ready(函数(){
$.ajax({
url:“@url.Action(“myMethod1”,“Home”)”,
键入:“POST”,
async:false,
成功:功能(数据){
警报(“发送完成”);
},  
错误:函数(错误){
警报(“错误”);
}
});
});
};

对于使用MVC模式通过Ajax恢复数据,您应该从控制器返回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类型发送数据,您也将按字符串类型恢复数据):


var GlobalVar1=0;
$(“#dropdownlist1”).change(函数getID(){
GlobalVar1=所选值;
警报(全球警报1);
$(文档).ready(函数(){
$.ajax({
url:“@url.Action(“myMethod1”,“Home”)”,
键入:“POST”,
async:false,
成功:功能(数据){
警报(“发送完成”);
},  
错误:函数(错误){
警报(“错误”);
}
});
});
};

步骤一

更改您的操作方法并返回一个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);
    }
第二步

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

也不要忘记将代码保存在$(文档)中。准备好了吗

    [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);
    }
更改您的操作方法并返回一个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);
    }
第二步

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

也不要忘记将代码保存在$(文档)中.ready

你好,Anadi。任务是在浏览器中显示带有样式文本的完整视图,以及带有返回描述值的TextBoxFor。在这种情况下,$.ajax将无法工作。您必须使用ajax.Beginform。使用“AddNewInfo.cshtml”更新您的问题,以便我可以更新我的答案。你好,Anadi。任务是在浏览器中显示complete使用样式文本和带有返回描述值的TextBoxFor查看。在这种情况下,$.ajax将不起作用。您必须使用ajax.Beginform。使用“AddNewInfo.cshtml”更新您的问题,以便我可以更新我的答案。
    [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);
    }