我怎么能将这些代码更改为MVC3 Razor

时间:2011-09-23 03:38:33

标签: asp.net-mvc-3 razor

我怎么能将这些代码更改为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)

3 个答案:

答案 0 :(得分:3)

创建自己的功能: http://weblogs.asp.net/hajan/archive/2011/02/05/functions-inside-page-using-razor-view-engine-asp-net-mvc.aspx

只需调用函数将函数传递给它,然后返回它,但要格式化它。


@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)