MVC4模型更改不会反映在后续的页面调用中

时间:2016-09-11 06:06:40

标签: javascript jquery ajax asp.net-mvc-4

我一直在研究几个小时以寻求解决方案,没有其他SO条目或其他来源的条目似乎已经解决了这个具体问题。所呈现的是实际代码的极小缩减版本,但它完全证明了这个问题,如果可以纠正这个问题,那么更大的代码也将被修复。问题是:

MVC4

Home控制器上的索引页面,一个HttpPost操作和一个HttpGet操作

简单模型称为PassModel,一个属性称为A(字符串)

@foreach循环中单个字段的Html DisplayFor

可以单击调用jQuery函数的HTML项目

在加载时,页面显示字母" A"和输入元素。 " A"加载到视图模型中的单个字段中。

单击input元素,调用jQuery函数。

它提交了一个ajax POST,它使用适当的数据(" C")正确调用Index操作,然后将其加载回视图模型实例。

Debug walk显示模型已完全更改为jQuery传递的值" C",并且更改的模型具有值" C"进入视图

当返回View(模型)时,旧的值为" A"仍然显示,新插入的模型值将被忽略(" C")

为改变后的模型内容提供的结构是否可以在第二遍中显示到视图中?我在网上尝试过很多与我遇到的有些相似的建议,更改了post to get,转而使用$ .get和$ .post(使用适当的注释更改),Model.State.Clear(),一切都无济于事。

感谢任何建议......所涉及的整个代码如下所示

代码:

public class HomeController : Controller {
    [HttpPost]
    public ActionResult Index(string id) {
        IList<PassModel> b = new List<PassModel>();
        PassModel x = new PassModel();
        x.A = id;
        b.Add(x);
        return View("Index", b);
    }    
    public ActionResult Index() {
        var x = new PassModel();
        x.A = "A";
        IList<PassModel> a = new List<PassModel>();
        a.Add(x);
        return View("Index",a);
    }
}

function fill(object) {
    $.ajax({
        url: '/Home/Index',
        type: 'POST',
        cache: false,
        data: { id: "C" },
    })

}

@model IList<PassModel>
<table>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.A)
        </td>
        <td>
            <input value="Input" onclick="fill(this)"/>

        </td>
    </tr>
}

</table>

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/JavaScript1.js"></script>


public class PassModel {
    public string A { get; set; }
}

0 个答案:

没有答案