据这些文档https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-3.1所了解,asp-for用于将值从输入元素传输到后端C#类属性,例如:
<input type="text" id="wsite" name="wsite" maxlength="11" asp-for="WebsiteName">
带有'@folderName ClassName;'在顶部,可让您转移到以下示例属性:
public string WebsiteName { get; set; }
但是,使用console.WriteLine进行测试表明,提交包含输入的表单后,该属性仍然为null。知道我缺少什么吗?
编辑:已更新以显示我的属性名称和as-for值匹配项,并添加我的控制器:
[HttpPost]
public IActionResult Post()
{
DBCRUD.Initialize(_context);
return NoContent();
}
答案 0 :(得分:0)
asp-for标记应与变量名匹配。
尝试定义您的html表单,例如:
@model Classname
<form asp-action="ActionName" asp-controller="ControllerName" ...>
<input type="text" asp-for="VarName">
和您的控制器:
public MyReturnVariable ActionName(ClassName class) {
Console.WriteLine(class.VarName);
}
答案 1 :(得分:0)
Tag Helpers与模型绑定一起使用,并在网页中创建和呈现HTML元素(显示模型属性)。
因此,在网页(或查看页面)的标题顶部,我们应该添加以下代码来分配模型。
@model MVCSample.Models.BookModel
然后,使用以下代码显示属性:
<div class="row">
<div class="col-md-4">
<form asp-action="AddBook">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="ID" class="control-label"></label>
<input asp-for="ID" class="form-control" />
<span asp-validation-for="ID" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="bookName" class="control-label"></label>
<input asp-for="bookName" class="form-control" />
<span asp-validation-for="bookName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
控制器中的代码:
[HttpGet]
public IActionResult AddBook()
{
BookModel book = new BookModel()
{
ID = 1001,
bookName = "War and Peace",
Title = "War and Peace"
};
return View(book);
}
模型中的代码:
public class BookModel
{
public int ID { get; set; }
public string bookName { get; set; }
public string Title { get; set; }
}
更多详细信息,您可以检查Model Binding。