当我想要提交form
模型时编辑在Asp.net核心2.2的Action
中显示null。我有一个包含2个Model
的ComplexViewModel
,像这样:
Complex ViewModel
public class CreateQuestionComplexModel
{
public questionViewModel questionViewModel { get; set; }
public IEnumerable<Group> GroupModel { get; set; }
}
控制器
[HttpGet]
public IActionResult CreateQuestion(CreateQuestionComplexModel model)
{
return View(model);
}
[HttpPost]
public IActionResult CreateQuestion(CreateQuestionComplexModel model)
{
//model is null here
//ModelState
}
这里是我的视图
@model porseman.Models.ComplexModel.CreateQuestionComplexModel
@Html.PartialAsync("SideBarMenu", Model.GroupModel)
<form class="row" asp-Controller="Question" asp-Action="CreateQuestion" method= "post">
<div class="form-group">
<div class="col-xs-10">
<input asp-for="questionViewModel.Title" type="text" class="form-control" />
</div>
<label asp-for="questionViewModel.Title" class="control-label col-xs-2"></label>
</div>
<input type="button" value="submit" class="btn" />
</form>
现在,当我提交表单时,所有的值在Action
中都是null
。在查看代码后,我发现所有输入名称都是前缀questionViewModel_Title
,所有输入名称都是 questionViewModel.Title
。现在,我如何将数据发布到Action
或?如何删除前缀?
发布于 2019-06-12 03:34:34
我可以手动添加id
来解决问题。
尝试此
@model porseman.Models.ComplexModel.CreateQuestionComplexModel
@Html.PartialAsync("SideBarMenu", Model.GroupModel)
<form class="row" asp-Controller="Question" asp-Action="CreateQuestion" method= "post">
<div class="form-group">
<div class="col-xs-10">
<input asp-for="questionViewModel.Title" id="Title" type="text" class="form-control" />
</div>
</div>
<input type="button" value="submit" class="btn" />
</form>
现在id
是Title
而不是questionViewModel_Title
,在控制器中你可以获取表单数据值。
发布于 2020-07-02 19:19:27
在MVC Core 3中,带有不在模型中的"asp-for“值的Html元素将显示为构建错误。
但是,有一种方法可以使用HTML "name“属性将值回发到另一个操作。只需将"name“值设置为要绑定到的action属性。在您的示例中,值与asp-for属性中建议的值相同
下面是一个示例,其中一个操作不采用原始模型,而是一个列表和一个整数来调整一些图像文件的大小
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult EditImages(List<string> filenames, int percentage)
Razor视图包含一个输入,该输入具有整数值(在本例中为RANGE元素)和一个字符串数组,其中多个隐藏元素的name属性具有相同的值
<input type="range" min="1" max="99" value="50" class="w-100" id="inputSizePercent" name="percentage">
@for (int index = 0; index < Model.Images.Count; index++)
{
<input type="hidden" name="filenames" value="@Model.Images[index].Filename" />
}
https://stackoverflow.com/questions/56528483
复制相似问题