【发布时间】:2011-03-14 22:51:28
【问题描述】:
我试图弄清楚 EditorFor 缓存信息的原因和方式。
这是一个简单的程序,有一个两个文本区域。一个用于输入,一个用于输出。输出文本区域的原因是它使全选副本更容易。
我的代码很简单。首先我的控制器放了一些默认值
public ActionResult MoveCss()
{
MoveCssIO model = new MoveCssIO(); ;
model.InputCss = "Fish";
return View(model);
}
然后我的模型启动并将输出作为输入的大写
[Required(ErrorMessage="Please provide some text to transform")]
[DataType(DataType.MultilineText)]
public string InputCss { get; set; }
private string _OutputCss;
[DataType(DataType.MultilineText)]
public string OutputCss {
get
{
Transform();
return _OutputCss;
}
set
{
_OutputCss = value;
}
}
private void Transform()
{
if (!string.IsNullOrWhiteSpace(InputCss))
{
_OutputCss = InputCss.ToUpper();
}
}
这是我的看法
##
@Html.Encode(Model.OutputCss)
$$
@Html.DisplayFor(model => model.OutputCss)
&&
@Html.EditorFor(model => model.OutputCss)
%%
所以在初始加载时我得到
##
FISH
$$
FISH
&&
<textarea class="text-box multi-line" id="OutputCss" name="OutputCss">
FISH</textarea>
%%
然后我使用 InputCss 的编辑器(未显示)将 InputCss 上的值更改为 ham
[HttpPost]
public ActionResult MoveCss(MoveCssIO model)
{
return View(model);
}
这将我的 OutputCss 设置为 HAM 并且页面会重新加载(没有 ajax)但是当我得到输出时
##
HAM
$$
HAM
&&
<textarea class="text-box multi-line" id="OutputCss" name="OutputCss">
FISH</textarea>
%%
我的问题是为什么 Html.EditorFor 中的值与 Html.DisplayFor 不同,我该如何解决这个问题?
更新:增加一点清晰度
【问题讨论】:
标签: asp.net-mvc-3 razor