在POST之后使用模型数据时遇到麻烦。我已经包含了POST之后调用的方法的相关代码,执行POST的.cshtml代码以及ViewModel。请注意,虽然我没有在此处包括它,但是我尝试使用[FromForm]:公共字符串UpdateSpoiler([FromForm] SpoilerAnalysisViewModel temp)
已设置默认路由。首次生成.cshtml页面时,它确实定义了正确的集合名称。 POST之后,所有数据为空。
任何帮助将不胜感激。
查看模型类:
public class SpoilerAnalysisViewModel
{
public string SetName = string.Empty;
// Colors
public bool White = true;
public bool Blue = true;
public bool Black = true;
public bool Red = true;
public bool Green = true;
public bool Colorless = true;
// CMC range
public byte minCMC = 0;
public byte maxCMC = 15;
// Card types
public bool Creature = true;
public bool Instant = true;
public bool Sorcery = true;
public bool Enchantment = true;
public bool Artifact = true;
public bool Land = true;
// Rarities
public bool Limited = true;
public bool Mythics = true;
public bool Rares = true;
public bool Uncommons = true;
public bool Commons = true;
}
.cshtml文件:
@model SpoilerAnalysisViewModel;
<!DOCTYPE html>
<body>
@using (Html.BeginForm("RefreshSpoiler", "SpoilerAnalysis", FormMethod.Post))
{
<table cellpadding="0" cellspacing="0">
<tr>
<td>
@Html.CheckBoxFor(m => m.White) White
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(m => m.minCMC) Minimum CMC
</td>
</tr>
<tr>
<td>
@Html.TextBoxFor(m => m.SetName) Current Set
</td>
</tr>
<tr>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
}
在POST之后调用的方法
[HttpPost]
public string RefreshSpoiler(SpoilerAnalysisViewModel temp)
{
if (temp == null) return "model is null";
return "set: " + temp.SetName;
}
答案 0 :(得分:0)
您的模型只是Set
的值,而没有Get
。
因此,如果要设置值,则需要以其他方式设置它:
假设您的模型是
public class SpoilerAnalysisViewModel
{
public public bool White{ get; set; }
....
}
然后您可以设置值:
SpoilerAnalysisViewModel model = new SpoilerAnalysisViewModel()
{
White= True;
....
};