Как я могу изменить этот код на MVC3 Razor - PullRequest
0 голосов
/ 23 сентября 2011

как я могу изменить этот код на 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 ]

3 голосов
/ 23 сентября 2011

Создайте свою собственную функцию: 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" }) 
0 голосов
/ 23 сентября 2011

Если вы используете тег @{ }, код вставляется в метод, используемый для генерации вывода.

Вы должны использовать @functions { } для определения элементов, которые вы хотите на уровне класса (= страницы).

Это сделает ваш код похожим на:

Прочитайте блог SLaks для получения дополнительной информации.

@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)
0 голосов
/ 23 сентября 2011

Я не думаю, что вы можете указать свойства adhoc в Razor. Однако вы можете создавать переменные.

@{ 
    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;        
    }
}

Надеюсь, это работает для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...