【发布时间】:2014-07-18 19:59:35
【问题描述】:
视图有 2 个 div。一个 div 显示文本框。另一个显示基于 Model.Flag 值的文本。 On$post 当我调试时,我得到了所需的内部和外部 html(带有第二个 div 文本)。但返回的视图只有文本框值,没有其他 div 值。由于变量 (jq) 具有正确的数据,有人可以说我是否必须通过类似 document.write 的方式重写 $.post 成功的 HTML 吗?观点是:
<% using (Html.BeginForm())
{
%>
<div>
The test message is <%= @Html.TextBox("Testname",Model.Testname) %>
</div>
<%
if (Model.Flag)
{ %>
<div>
Print this as true
</div>
<%} %>
<input type ="button" value ="ClickChange" id="btnChange" />
<% } %>
$(function()
{
$("#btnChange").click(function()
{
alert("clicked");
$.post("/Display/DisplayAgain/", { Testname: $("#Testname").val() },
function(data)
{
alert("success");
var jq = jQuery(data);
});
});
});
控制器是:
public ActionResult FirstDisplay()
{
TestWierd.ViewModels.DisplayViewModel dispModel = new
TestWierd.ViewModels.DisplayViewModel();
return View("Details",dispModel);
}
public ActionResult DisplayAgain(TestWierd.ViewModels.DisplayViewModel dispModel)
{
dispModel.Flag = true;
return View("Details", dispModel);
}
我知道 $,post 会刷新整个视图,但这并没有发生。难道我的理解不正确。当我调试视图时,我得到 Model.Flag 为真,当我通过调试 javascript 将 watch 添加到变量 jq 时,我得到了带有所需 HTML 的内部 HTML 和外部 HTML,即带有文本框及其由用户输入的值和HTML“将其打印为真”,但在浏览器上我只看到 texbox 的值,但看不到另一个带有文本“将其打印为真”的 div。 难道我做错了什么。我可以不使用 $.post 来检查模型值和显示文本吗?是否只需要在服务器端刷新视图。请帮忙。
【问题讨论】:
-
请添加您的 DisplayViewModel 代码