POST之后的网络核心模型绑定失败

时间:2019-11-27 16:26:25

标签: c# asp.net-core asp.net-core-mvc

在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;
    }

1 个答案:

答案 0 :(得分:0)

您的模型只是Set的值,而没有Get。 因此,如果要设置值,则需要以其他方式设置它:

假设您的模型是

public class SpoilerAnalysisViewModel
{
 public public bool White{ get; set; }
 ....
}

然后您可以设置值:

 SpoilerAnalysisViewModel model = new SpoilerAnalysisViewModel()
 {
   White= True;
   ....
 };