在剃刀MVC奇怪的行为,而使用Html.Helpers [英] Strange Behavior in Razor MVC while using Html.Helpers
本文介绍了在剃刀MVC奇怪的行为,而使用Html.Helpers的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的剃刀HtmlHelpers。
使用code下面我试图打印ViewItemDto的价值,但它始终显示为0使用@ Html.TextBoxFor或任何@Html ......对于(X => ..)方法。
没有任何人有一个想法,为什么发生这种情况?
请注意 - 该方法返回正确的值,我可以调试和看到的看法侧调试窗口中值
[DataContract]
[Serializable接口]
公共类ViewItemDto
{
[数据成员]
公共小数ViewItemId {搞定;组; } [数据成员]
公共字符串ITEMNAME {搞定;组; }
}从控制器恢复
公众的ActionResult指数()
{
ViewItemDto viewItem =新ViewItemDto();
viewItem.ItemName =OLDDATA;
viewItem.ViewItemId = 10;
返回查看(viewItem);
} 公共PartialViewResult保存数据(ViewItemDto viewItem)
{
viewItem.ItemName =NewData;
viewItem.ViewItemId = 100;
返回PartialView(ViewUserControl1,viewItem);
}在查看ViewUserControl1@model Testing.Models.ViewItemDto
< DIV ID =divSave>
@using(Ajax.BeginForm(保存数据,家,新AjaxOptions()
{
UpdateTargetId =divSave
的onSuccess =的onSuccess
InsertionMode = InsertionMode.Replace
}))
{
@ Html.TextBoxFor(X => x.ViewItemId)//显示10
@ Html.TextBox(ID,Model.ViewItemId)//显示正确的值100
@ Html.TextBoxFor(X => x.ItemName)//显示OLDDATA值
<输入类型=提交名称=名字值=提交/>
}
和Index.cshtml
@model Testing.Models.ViewItemDto
@ {
ViewBag.Title =指数;
布局=〜/查看/共享/ _Layout.cshtml
}
< H2>指数< / H>@ Html.Partial(ViewUserControl1模型);
解决方案
你不应该:
返回PartialView(viewItem);
而不是:
收益viewItem;
I am using Razor HtmlHelpers. using the code below i tried to print the value of ViewItemDto but it always show 0 for using @Html.TextBoxFor or any @Html...For(x=>..) method.
Does anybody have a idea why this is happening?
Note - The method is returning proper value as i can debug and see the value in debug window on views side.
[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" />
}
and Index.cshtml
@model Testing.Models.ViewItemDto
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
@Html.Partial("ViewUserControl1", Model);
解决方案
Shouldn't you be:
return PartialView(viewItem);
instead of:
return viewItem;
这篇关于在剃刀MVC奇怪的行为,而使用Html.Helpers的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文