我正在使用Razor HtmlHelpers。 使用下面的代码我试图打印ViewItemDto的值,但它总是显示0使用@ Html.TextBoxFor或任何@Html ... For(x => ..)方法。
有人知道为什么会这样吗?
注意 - 该方法返回正确的值,因为我可以调试并在视图端的调试窗口中查看值。
[DataContract]
[Serializable]
public class ViewItemDto
{
[DataMember]
public decimal ViewItemId { get; set; }
[DataMember]
public string ItemName { get; set; }
}
From Controller Return
public ActionResult Index()
{
ViewItemDto viewItem = new ViewItemDto();
viewItem.ItemName = "OldData";
viewItem.ViewItemId = 10;
return View(viewItem);
}
public PartialViewResult SaveData(ViewItemDto viewItem)
{
viewItem.ItemName = "NewData";
viewItem.ViewItemId = 100;
return PartialView("ViewUserControl1", viewItem);
}
On View ViewUserControl1
@model Testing.Models.ViewItemDto
<div id="divSave">
@using (Ajax.BeginForm("SaveData", "Home", new AjaxOptions()
{
UpdateTargetId = "divSave",
OnSuccess = "OnSuccess",
InsertionMode = InsertionMode.Replace
}))
{
@Html.TextBoxFor(x => x.ViewItemId)//Shows 10
@Html.TextBox("ID", Model.ViewItemId) //Shows proper value 100
@Html.TextBoxFor(x => x.ItemName)//Shows oldData value
<input type="submit" name="name" value="Submit" />
}
和Index.cshtml
@model Testing.Models.ViewItemDto
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
@Html.Partial("ViewUserControl1", Model);
答案 0 :(得分:1)
你不应该:
return PartialView(viewItem);
而不是:
return viewItem;
答案 1 :(得分:0)
通过将控制器的代码更改为以下内容,可以在此处工作:
public PartialViewResult SaveData(ViewItemDto viewItem)
{
viewItem.ViewItemId = 100;
return viewItem;
}
我无法重现您的问题,因为提供的代码甚至没有编译。