我有一个具有显式属性的模型类,似乎MVC绑定器不绑定它们。我收到错误
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary
这是已知的问题吗?我在谷歌上找不到任何关于此的文档。
我的班级
public interface IPdf2Source
{
string Password { get; set; }
string OutputFormatSelected { get; set; }
}
public class OptionModel : IPdf2Source
{
public IPdf2Source Pdf2Source
{
get { return this; }
}
//Bind Ok
public string Email { get; set; }
//I get error on these properties while binding.
string IPdf2Source.Password { get; set; }
string IPdf2Source.OutputFormatSelected { get; set; }
}
查看
@using (Html.BeginForm())
{
@Html.TextBoxFor(p => p.Email)
@Html.TextBoxFor(p => p.Pdf2Source.Password)
@Html.HiddenFor(p=>p.Pdf2Source.OutputFormatSelected)
}
Controller Action,因为绑定失败而从未调用过。如果我删除显式声明的属性,一切正常。
public JsonResult ValidateFile(OptionModel formData)
{
}
答案 0 :(得分:0)
//I get error on these properties while binding.
string IPdf2Source.Password { get; set; }
string IPdf2Source.OutputFormatSelected { get; set; }
为什么那些人甚至在那里?这不是正确的语法。此外,您已在界面中定义了这些值。
修改强>
你是对的,抱歉我对显式接口定义有点过时了。实际上看起来你几乎完美地完成了所有事情,但现在我看着它,我想我看到了你的问题。您似乎需要将显式定义更改为public
。
public string IPdf2Source.Password { get; set; }
public string IPdf2Source.OutputFormatSelected { get; set; }