我怎么能将这些代码更改为MVC3 Razor,它是脚本代码。 我得到这些代码http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-5-master-page-templates.html 这是MVC2模板,我想把它改成Razor。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script runat="server">
private object ModelValue {
get {
if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model) {
return String.Format(
System.Globalization.CultureInfo.CurrentCulture,
"{0:0.00}", ViewData.ModelMetadata.Model
);
}
return ViewData.TemplateInfo.FormattedModelValue;
}
}
</script>
<%= Html.TextBox("", ModelValue, new { @class = "text-box single-line" }) %>
我更改为Razor,但它不起作用:
@{
private object FormattedValue
{
get
{
if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model)
{
return String.Format(System.Globalization.CultureInfo.CurrentCulture,"{0:0.00}",ViewData.ModelMetadata.Model);
}
return ViewData.TemplateInfo.FormattedModelValue;
}
}
}
@Html.Encode(FormattedValue)
答案 0 :(得分:3)
只需调用函数将函数传递给它,然后返回它,但要格式化它。
@functions{
public MvcString FormatValue(object valuetoFormat)
{
...logic here ...
return ....
}
}
大致称呼它:
@Html.TextBox("", FormatValue(ModelValue), new { @class = "text-box single-line" })
答案 1 :(得分:0)
我认为你不能在Razor中指定adhoc属性。但是,您可以创建变量。
@{
object FormattedValue;
if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model)
{
FormattedValue = String.Format(System.Globalization.CultureInfo.CurrentCulture,"{0:0.00}",ViewData.ModelMetadata.Model);
}else{
FormattedValue = ViewData.TemplateInfo.FormattedModelValue;
}
}
希望这对你有用吗?
答案 2 :(得分:0)
如果使用@{ }
标记,代码将插入到用于生成输出的方法中。
您应该使用@functions { }
在课程(=页面)级别定义您想要的元素。
这将使您的代码看起来像:
Read SLaks blog for more information.
@functions {
private object FormattedValue
{
get
{
if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model)
{
return String.Format(System.Globalization.CultureInfo.CurrentCulture,"{0:0.00}",ViewData.ModelMetadata.Model);
}
return ViewData.TemplateInfo.FormattedModelValue;
}
}
}
@Html.Encode(FormattedValue)