带String.Format的ASP.NET表达式(内联标记)
我只是想知道是否可以将带String.Format的ASP.NET表达式(内联标记),asp.net,Asp.net,我只是想知道是否可以将String.Format与以下内联标记一起使用: <asp:RequiredFieldValidator ControlToValidate="tbTest" Text="<%$ Resources:ErrorMsg, E3032 %>" runat="server" /> 像这样 <asp:RequiredFieldValidator ControlToValidate="tbTest" Text='<%= String.Fo
String.Format
与以下内联标记一起使用:
<asp:RequiredFieldValidator ControlToValidate="tbTest" Text="<%$ Resources:ErrorMsg, E3032 %>" runat="server" />
像这样
<asp:RequiredFieldValidator ControlToValidate="tbTest" Text='<%= String.Format(<%$ Resources:ErrorMsg, E3032 %>, "Other Text to insert")' runat="server" />
我知道你不能那样做,但这只是为了拍照片
tx资源绑定语法仅限于接受两个参数:资源容器的名称和资源密钥。
您可以在数据绑定中使用
<asp:RequiredFieldValidator
ControlToValidate="tbTest"
Text='<%# String.Format(
Convert.ToString(GetGlobalResourceObject("ErrorMsg", "E3032"),
System.Globalization.CultureInfo.CurrentCulture),
"Other Text to insert") %>'
/>
如果控件不是数据库控件的子控件,则可能需要调用tbTest.DataBind()。为此,我创建了自己的表达式: web.config:
<expressionBuilders>
<add expressionPrefix="CreerMsgErreur" type="MsgErreurs, App_Code" />
</expressionBuilders>
.aspx:
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="tbdDateFin"
CssClass="test" Text="<%$ CreerMsgErreur:E3033, insert, date %>"
ErrorMessage="<%$ CreerMsgErreur:E3033, insert, date %>"
runat="server" EnableClientScript="true" SetFocusOnError="true" />
.vb:
导入系统
导入System.CodeDom
导入系统
导入System.Security.Permissions
导入系统.Web
导入System.Web.Compilation
导入System.Web.UI
_
_
_
公共类MsgErreurs
继承ExpressionBuilder
公共重写函数GetCodeExpression(ByVal条目作为System.Web.UI.BoundPropertyEntry,ByVal parsedData作为对象,ByVal上下文作为System.Web.Compilation.ExpressionBuilderContext)作为System.CodeDom.CodeExpression
如果parsedData不是空的,那么
返回新的CodePrimitiveExpression(CType(parsedData,MsgErreursParse).ToString())
如果结束
返回新的CodePrimitiveExpression(“Erreur de l'expression”)
端函数
Public将函数ParseExpression(ByVal表达式作为字符串,ByVal propertyType作为System.Type,ByVal上下文作为System.Web.Compilation.ExpressionBuilderContext)作为对象重写
Dim lemsgerreursreur作为MsgErreursParse=Nothing
如果不是String.IsNullOrEmpty(表达式),则
leMsgErreur=New-MsgErreursParse(表达式)
其他的
抛出新的HttpException(String.Format(“Message de l'expression MsgErreur vous devez enter une expression.”)
如果结束
返回旅店
端函数
私有类MsgErreursParse
私有mNoErreur作为字符串
私有参数作为字符串
公共属性NoErreur()作为字符串
得到
返回mNoErreur
结束
设置(ByVal值作为字符串)
mNoErreur=值
端集
端属性
公共属性参数()作为字符串
得到
返回参数
结束
设置(ByVal值作为字符串)
mParameters=值
端集
端属性
Public Sub New(ByVal参数为字符串)
尝试
mNoErreur=parameters.Substring(0,parameters.IndexOf(“,”).Trim()
mParametres=parametres.Substring(parametres.IndexOf(“,”)+1.Trim()
捕获ex作为ArgumentOutOfRangeException
mNoErreur=参数
特例
结束尝试
如果String.IsNullOrEmpty(mNoErreur),则
抛出新的HttpException(String.Format(“Message de l'expression MsgErreur:vous devez spécifier un code d'erreur ou les paramètres ne sont pas dans le bon Format:{0}”,参数))
如果结束
端接头
Public Sub New(ByVal noErreur作为字符串,ByVal参数作为字符串)
mNoErreur=noErreur
mParametres=参数
端接头
Public将函数ToString()重写为字符串
尝试
如果String.IsNullOrEmpty(参数),则
返回Convert.ToString(HttpContext.GetGlobalResourceObject(“MsgErreurs”,NoErreur),System.Globalization.CultureInfo.CurrentCulture)
其他的
返回String.Format(Convert.ToString(HttpContext.GetGlobalResourceObject(“MsgErreurs”,NoErreur),System.Globalization.CultureInfo.CurrentCulture),parameters.Split(“,”).Select(函数s.Trim()).ToArray())
如果结束
特例
抛出新的HttpException(String.Format(“Message de l'expression MsgErreur:impossable de créer le Message d'erreur:NoErreur:{0},参数:{1}”,NoErreur,参数))
结束尝试
端函数
末级
末级
要插入的其他文本不也需要来自资源文件吗?很好!但不是针对我正在处理的情况。:)Resources:ErrorMsg是否给出格式类型字符串?给我们一个输出的例子。输出类似于:“{0}是必需的。”所以我希望String.Format(,“Name”)给我“Name是必需的”。我不太喜欢解决方案bc,我不想为每个验证器调用DataBind()。不妨从codebehind开始做所有事情,但后来我在Page_load中尝试了Page.DataBind(),它成功了。酷。只希望它不会干扰其他数据绑定控件。
Imports System
Imports System.CodeDom
Imports System.Linq
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Compilation
Imports System.Web.UI
<ExpressionPrefix("Reflect")> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.LinkDemand, Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class MsgErreurs
Inherits ExpressionBuilder
Public Overrides Function GetCodeExpression(ByVal entry As System.Web.UI.BoundPropertyEntry, ByVal parsedData As Object, ByVal context As System.Web.Compilation.ExpressionBuilderContext) As System.CodeDom.CodeExpression
If parsedData IsNot Nothing Then
Return New CodePrimitiveExpression(CType(parsedData, MsgErreursParse).ToString())
End If
Return New CodePrimitiveExpression("Erreur de l'expression")
End Function
Public Overrides Function ParseExpression(ByVal expression As String, ByVal propertyType As System.Type, ByVal context As System.Web.Compilation.ExpressionBuilderContext) As Object
Dim leMsgErreur As MsgErreursParse = Nothing
If Not String.IsNullOrEmpty(expression) Then
leMsgErreur = New MsgErreursParse(expression)
Else
Throw New HttpException(String.Format("Message de l'expression MsgErreur vous devez entrer une expression."))
End If
Return leMsgErreur
End Function
Private Class MsgErreursParse
Private mNoErreur As String
Private mParametres As String
Public Property NoErreur() As String
Get
Return mNoErreur
End Get
Set(ByVal value As String)
mNoErreur = value
End Set
End Property
Public Property Parametres() As String
Get
Return mParametres
End Get
Set(ByVal value As String)
mParametres = value
End Set
End Property
Public Sub New(ByVal parametres As String)
Try
mNoErreur = parametres.Substring(0, parametres.IndexOf(",")).Trim()
mParametres = parametres.Substring(parametres.IndexOf(",") + 1).Trim()
Catch ex As ArgumentOutOfRangeException
mNoErreur = parametres
Catch ex As Exception
End Try
If String.IsNullOrEmpty(mNoErreur) Then
Throw New HttpException(String.Format("Message de l'expression MsgErreur : vous devez spécifier un code d'erreur ou les paramètres ne sont pas dans le bon format : {0}", parametres))
End If
End Sub
Public Sub New(ByVal noErreur As String, ByVal parametres As String)
mNoErreur = noErreur
mParametres = parametres
End Sub
Public Overrides Function ToString() As String
Try
If String.IsNullOrEmpty(Parametres) Then
Return Convert.ToString(HttpContext.GetGlobalResourceObject("MsgErreurs", NoErreur), System.Globalization.CultureInfo.CurrentCulture)
Else
Return String.Format(Convert.ToString(HttpContext.GetGlobalResourceObject("MsgErreurs", NoErreur), System.Globalization.CultureInfo.CurrentCulture), Parametres.Split(",").Select(Function(s) s.Trim()).ToArray())
End If
Catch ex As Exception
Throw New HttpException(String.Format("Message de l'expression MsgErreur : impossible de créer le message d'erreur : NoErreur : {0}, Parametres : {1}", NoErreur, Parametres))
End Try
End Function
End Class
End Class