在带有EF Core的MVC Core App中使用asp-for设置属性吗?

时间:2020-07-29 07:37:50

标签: asp.net-core asp.net-core-mvc ef-core-3.1

据这些文档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();
    }

2 个答案:

答案 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