从表单提交的空模型

Sergi0

我正在使用Asp.Net Core的最新预览。我的页面上有非常简单的编辑表单,并显示了一些其他数据。

@model SeasonFullDetailsViewModel

.....

<form asp-action="Save">
    <div class="form-horizontal">
        <hr />
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <input type="hidden" asp-for="SeasonId" />
        <div class="form-group">
            <label asp-for="Season" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="Season" class="form-control" />
                <span asp-validation-for="Season" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="IsFinal" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="IsFinal" class="form-control" />
                <span asp-validation-for="IsFinal" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
</form>

问题是我无法将表单数据仅作为单独的字段提交给模型。

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Save(int seasonId, string season, bool isFinal)
{
    // values are ok
    return new EmptyResult();
}

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Save(SeasonFullDetailsViewModel season)
{
    // empty values inside season
    return new EmptyResult();
}

我认为问题在于模型使用继承,并且来自表单的数据包含在父类中。

public class SeasonFullDetailsViewModel : SeasonDetailsViewModel
{
    // some data here
}


public class SeasonDetailsViewModel : SeasonBaseViewModel
{   
    public bool IsFinal { get; set; }

    // also some other data
}


public class SeasonBaseViewModel
{
    public int SeasonId { get; set; }

    public string Season { get; set; }

    // and some more data
}

我试图使用一个更简单的模型,但是它也不起作用。

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Save(SeasonEditModel season)
{
    // empty values inside season
    return new EmptyResult();
}

public class SeasonEditModel
{
    public int SeasonId { get; set; }

    public string Season { get; set; }

    public bool IsFinal { get; set; }
}

我知道我可以使用Ajax发送数据,也可以仅从单独的字段中创建所需的模型,但是我想找出问题所在以及是否有解决方法。为什么使用SeasonEditModel的解决方案不起作用?

贾斯汀·萨雷斯诺(Justin Saraceno)

这是在这里回答:asp.Net MVC视图模型在发布时为空

按照约定,您需要使用与视图模型名称相同的参数名称。你有:

public IActionResult Save(SeasonFullDetailsViewModel season)

如果您将参数名称更改为像这样匹配,它应该可以工作:

public IActionResult Save(SeasonFullDetailsViewModel seasonFullDetailsViewModel)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

表单提交获取空模型

来自分类Dev

从Partial View向Controller提交表单时模型为空

来自分类Dev

在For Loop中具有表单的MVC视图提交空模型

来自分类Dev

提交表单后模型中的对象列表为空

来自分类Dev

表单以空值提交

来自分类Dev

空提交的 Formspree 表单

来自分类Dev

表单提交后保持模型

来自分类Dev

MVC 4模型中的“提交表单”在控制器发布方法中为空

来自分类Dev

MVC 4模型中的“提交表单”在控制器发布方法中为空

来自分类Dev

提交表单时,在MVC中将空模型传递给控制器

来自分类Dev

MVC 5模型中的“提交表单”在控制器发布方法中为空

来自分类Dev

$ _POST表单提交后为空

来自分类Dev

提交表单后的空modelAttribute

来自分类Dev

我的 html 表单提交空

来自分类Dev

提交后模型为空

来自分类Dev

如果表单为空,则阻止提交表单

来自分类Dev

MVC表单发布空模型

来自分类Dev

表单提交时的angularJS更新表模型

来自分类Dev

无法在模型反应中提交表单

来自分类Dev

表单提交时的angularJS更新表模型

来自分类Dev

在表单提交jQuery之前删除空值

来自分类Dev

angularjs表单提交数据为空

来自分类Dev

提交模型驱动的表单后如何清除表单?(角度2)

来自分类Dev

Codeigniter HTML表单在表单提交时为空

来自分类Dev

表单发布时模型值变为空

来自分类Dev

删除Django模型表单中的空级别

来自分类Dev

删除Django模型表单中的空级别

来自分类Dev

多模型嵌套选择类型下拉表单提交

来自分类Dev

Rspec:使用JS提交表单时模型未更新