将字面值字符串从MVC视图传递到视图模型

本文关键字:视图 模型 MVC 字面值 字符串 | 更新日期: 2023-09-27 17:50:55

我必须将字符串从视图传递给Model。

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

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

我已经尝试了,但是没有成功

  1. 用双引号转义。示例-> "key"
  2. 用正斜杠转义。示例-> '"key'"
  3. 没有引号。示例->键
  4. 在模型中创建const ->示例。模型。Key (Error -> instance is required)
  5. 转义"->仍然有错误

下面的工作,但看起来很丑
1. 在Model中只读创建(非静态)。

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

    html 中的转义代码
  1. html中的Pass枚举值(如Category.Key)
  2. 在html中传递常量值(如Constants.Key)
  3. 在html中传递静态值(如Model.Key)

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

以前,用数组代替字典,传递索引是完美的。

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

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

将字面值字符串从MVC视图传递到视图模型

创建一个变量来保存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>

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

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