0

我必须从视图将文字字符串传递给模型。

模型有一个Dictionary<string,string>,我需要从视图中传递密钥。

  <a href="@Url.Content("~/temp/Data/" + Model.Dict[<Need to pass key here ???>])" 

我已尝试关注但未能成功

  1. 用双引号转义。示例 -> ""key""
  2. 使用正斜杠转义。示例 -> \"key\"
  3. 没有引号。示例 -> 键
  4. 在模型中创建 const -> 示例。Model.Key(错误 -> 需要实例)
  5. 用 " 转义 -> 还有一些错误

以下工作有效,但看起来很难看
1. 在模型中创建只读(非静态)。

我正在寻找以下解决方案之一

  1. html中的一些转义代码
  2. 在 html 中传递枚举值(如 Category.Key)
  3. 在 html 中传递 const 值(如 Constants.Key)
  4. 在 html 中传递静态值(如 Model.Key)

任何一个都可以,但欢迎在答案中指定多个/全部。

以前,有数组代替字典,并且传递索引工作得很好。

<a href="@Url.Content("~/temp/Data/" + Model.Dict[0])" 

我是 MVC 的新手。这个问题可能是基本的,但我已经放弃了。

4

2 回答 2

2

你不需要在这里做任何花哨的事情;Razor 视图引擎知道如何处理字符串。

<a href="@Url.Content("~/temp/Data/" + Model.Dict["key"])">
于 2013-01-08T06:49:55.743 回答
2

如何创建一个变量来保存 Razor 代码块中的字符串并将其传递给字典?

@{
    //Set the value of the key to a temporary variable
    var theKey = "key"; 
 }

<!-- Reference the temporary variable in the indexer -->
<a href="@Url.Content("~/temp/Data/" + Model.Dict[theKey])"></a>

要使用 const(或模型中的任何静态),您必须使用字段/属性的类型限定名称,就像在代码中一样。

所以如果你有

public const string Foo = "Bar";

或者

public static readonly Foo = "Bar";

public class ThePageModel
{
    ...
}

您在视图中的代码看起来更像

<a href="@Url.Content("~/temp/Data/" + Model.Dict[MyApplication1.Models.ThePageModel.Foo])"></a>

.ToString()枚举也是如此,但由于您的字典接受一个字符串而不是任何枚举类型,为了使这个示例挂在一起,在访问视图中的枚举之后会有一个。

public enum MyEnum
{
    MyDictionaryKey1,
    MyDictionaryKey2,
    MyDictionaryKey3
}

...

<a href="@Url.Content("~/temp/Data/" + Model.Dict[MyApplication1.Models.MyEnum.MyDictionaryKey1.ToString()])"></a>
于 2013-01-08T06:59:05.693 回答