我必须从视图中将文字字符串传递给模型。
模型有一个Dictionary<string,string>
,我需要从视图中传递密钥。
<a href="@Url.Content("~/temp/Data/" + Model.Dict[<Need to pass key here ???>])"
我试过以下但是没能成功
以下有效,但看起来很难看 1.在Model中创建只读(非静态)。
我正在寻找以下解决方案之一
任何人都可以,但欢迎指定多个/全部答案。
以前,有数组代替字典,并且传递索引工作完美。
<a href="@Url.Content("~/temp/Data/" + Model.Dict[0])"
我是MVC的新手。问题可能是基本的,但我放弃了。
答案 0 :(得分:2)
你不需要在这里做任何事情; Razor视图引擎知道如何处理字符串。
<a href="@Url.Content("~/temp/Data/" + Model.Dict["key"])">
答案 1 :(得分: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>