2

我非常需要使用自定义输入命名规则,例如:

<input type="text" value="1" name="products[123][qty]">

不能使用@HtmlTextBoxFor()

我决定将“产品”和“数量”文本文字移动为常量。也有强烈的需求。

然后我尝试了:

<input id="qty" type="text" value="1" name="@OrderContext.PRODUCTS_KEY[123][@OrderContext.QUANTITY_KEY]">

我得到一个错误,因为在 Razor 中使用了“[”和“]”,就像索引分隔符一样,我需要像字符串文字一样使用它。我试图用“\”转义它们,但后来我得到了 HTML 而不是所需的“[”和“]” "\[""\]"

如何正确转义方括号?你有什么建议?

真正需要的是移动输入名称键,如“产品”和“数量”,以便在一个地方进行定义和更改。

4

2 回答 2

4

尝试

<input id="qty" type="text" value="1" name="@(OrderContext.PRODUCTS_KEY)[123][@OrderContext.QUANTITY_KEY]">

紧随其后的括号@将解析为代码的范围限制为仅括号内的内容。

于 2014-01-31T10:52:27.737 回答
1

您可能会争辩说您所做的事情与数据相关。所以它属于模型。所以编辑你的模型:

public class OrderContext
{
  public string PRODUCTS_KEY {get; set;}
  public int QUANTITY_KEY {get; set;}
  public string PRODUCTS_KEY_InputName
  {
    get
    {
      return string.format("{0}[123][{1}]", PRODUCTS_KEY, QUANTITY_KEY);

    }
  }

}

看法

然后你可以简单地在你的视图中打印它:

<input id="qty" type="text" value="1" name="@PRODUCTS_KEY_InputName">
于 2014-01-31T10:50:05.207 回答