在剃刀MVC奇怪的行为,而使用Html.Helpers [英] Strange Behavior in Razor MVC while using Html.Helpers

查看:142
本文介绍了在剃刀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
< D​​IV 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆