将字面值字符串从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 ???>])"
我已经尝试了,但是没有成功
- 用双引号转义。示例-> "key"
- 用正斜杠转义。示例-> '"key'"
- 没有引号。示例->键
- 在模型中创建const ->示例。模型。Key (Error -> instance is required)
- 转义"->仍然有错误
下面的工作,但看起来很丑
1. 在Model中只读创建(非静态)。
我正在寻找以下解决方案之一
- html 中的转义代码
- html中的Pass枚举值(如Category.Key)
- 在html中传递常量值(如Constants.Key)
- 在html中传递静态值(如Model.Key)
任何一个都可以,但欢迎在答案中指定多个/所有。
以前,用数组代替字典,传递索引是完美的。
<a href="@Url.Content("~/temp/Data/" + Model.Dict[0])"
我是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"])">