Asp.net mvc 如何加载上一个employeeid的值+;1在添加操作中

Asp.net mvc 如何加载上一个employeeid的值+;1在添加操作中,asp.net-mvc,entity-framework,model-view-controller,Asp.net Mvc,Entity Framework,Model View Controller,我有控制器名emp有动作添加 我需要在操作添加视图加载时显示最后一个值增加1英寸 employeeid文本框 意思是假设我在employee表中有employeeid值1,那么当操作添加时 视图加载的employeeid必须有2个 那该怎么做呢 在行动上我写了什么 [httpget] 隐藏复制代码 public IActionResult Create() { 我在这里写什么 } 查看添加 我在这里写什么 <div class="form-group">

我有控制器名emp有动作添加

我需要在操作添加视图加载时显示最后一个值增加1英寸

employeeid文本框

意思是假设我在employee表中有employeeid值1,那么当操作添加时

视图加载的employeeid必须有2个

那该怎么做呢

在行动上我写了什么

[httpget] 隐藏复制代码 public IActionResult Create() { 我在这里写什么 } 查看添加 我在这里写什么

 <div class="form-group">
                <label asp-for="EmployeeId" class="control-label"></label>
                <input asp-for="EmployeeId" class="form-control" />
                <span asp-validation-for="EmployeeId" class="text-danger"></span>
            </div>
并且我将模型传递给视图

<form asp-action="Create">

            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="EmployeeId" class="control-label"></label>
                <input asp-for="EmployeeId" class="form-control" />
                <span asp-validation-for="EmployeeId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="BranchCode" class="control-label"></label>
                <input asp-for="BranchCode" class="form-control" />
                <span asp-validation-for="BranchCode" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EmployeeName" class="control-label"></label>
                <input asp-for="EmployeeName" class="form-control" />
                <span asp-validation-for="EmployeeName" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EmployeeAge" class="control-label"></label>
                <input asp-for="EmployeeAge" class="form-control" />
                <span asp-validation-for="EmployeeAge" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="JoinDate" class="control-label"></label>
                <input asp-for="JoinDate" class="form-control" />
                <span asp-validation-for="JoinDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="BirthDate" class="control-label"></label>
                <input asp-for="BirthDate" class="form-control" />
                <span asp-validation-for="BirthDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <div class="checkbox">
                    <label>
                        <input asp-for="Active" /> @Html.DisplayNameFor(model => model.Active)
                    </label>
                </div>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </form>
    </div>
</div>

@DisplayNameFor(model=>model.Active)

如果您的模型具有属性
EmployeeId
,请将此值设置为如下所示

public IActionResult Create()
{
    var model = new Employee();
    model.EmployeeId = _context.GetAll().Max(Employee => Employee.EmployeeId).FirstOrDefault() + 1;

    return View(model);
}
或者,如果您没有要传递到
视图的
模型
,请使用
视图包

ViewBag["maxEmployeeId"] = _context.GetAll().Max(Employee => Employee.EmployeeId).FirstOrDefault() + 1;

请不要使用
.GetAll()
,这将导致性能问题。这意味着您正在将所有员工记录加载到应用程序端,然后实际查询加载的员工数据。试想一下,如果你有5万多名员工。因此,您必须使用LINQ
IQueryable
扩展方法,它将根据您的设计查询生成SQL操作

帮助链接:

如果你想做一些其他的表达,请试试这个

context.Employee.Select(x => x.EmployeeId).DefaultIfEmpty(0).Max()+1

你为什么需要这个?我觉得您应该依靠数据库为您生成下一个ID值。EF会这样做。你能告诉我怎么做吗?你能告诉我怎么做吗?当你的实体有一个主键时,EF在保存新记录时不是为你这样做吗?这是不明智的做法,因为你的数据库通常在插入记录时会处理这个问题。如果您在加载视图时生成id,然后另一个用户也会这样做并在您之前插入,则当您点击submit时,该id将已经存在,因此,最有可能引发异常。好的,在视图中,如何传递变量var maxEmployeeId的此值,您可以使用
ViewBag
。视图中如果可能,还有一件事要做:如何定义ViewBag[“maxEmployeeId”]您是否将任何
模型
传递给
视图?
context.Employee.Select(x => x.EmployeeId).DefaultIfEmpty(0).Max()+1