我正在使用文本框更新用户记录,它向数据库提交半名称,例如如果Name是'John Mathew',那么它只提交'John'。 EVen我检查了从Textbox发送到行动的值已完成但提交了一半,为什么?我注意到,我的文本框被绑定到数据库中的EmplName字段,它从那里选择了一半的名字,在值中它显示了半名称,这就是为什么它提交半名称为什么?
这一行:
控制器:
public ActionResult InsertEmployeeEditedDetail(String EmpName, String DeptID, String ShiftId, String EntryDate, String Salary, String Email, bool Approval)
{
int? EmplId = Convert.ToInt32(Session["EmpEdit"]);
var UpdateRec = DataContext.UpdateEmployeeDetails_Sp(EmplId, EmpName, DeptID, ShiftId, EntryDate, Salary, Email, Approval);
return View();
}
查看:
@using EmployeeAttendance_app.Models
@model IEnumerable<GetEmployeeEditDetails_SpResult>
@{
var Item = Model.FirstOrDefault();
}
<style type="text/css">
</style>
<div>
@using (Html.BeginForm("InsertEmployeeEditedDetail", "Home", FormMethod.Post))
{
<label id="lblName" class="editEmp_label">Name</label>
<input type="text" value= @Item.EmplName name="EmpName" placeholder="Update Name" />
<br />
<label id="lblDept" class="editEmp_label">Department</label>
@Html.DropDownList("DeptID", @Item.DeptName)
<br />
<label id="lblShift" class="editEmp_label">Shift</label>
@Html.DropDownList("ShiftId", @Item.ShiftName)
<br />
<label id="lblEntryDate" class="TxtBoxFrom editEmp_label">Entry Date</label>
<input type="text" value= @Item.EntryDate class="TxtBoxTo" name="EntryDate" placeholder="Update Date" />
<br />
<label id="lblSalary" class="editEmp_label">Salary</label>
<input type="text" value= @Item.BasicSalary name="Salary" placeholder="Update Salary" />
<br />
<label id="lblEmail" class="editEmp_label">Email</label>
<input type="text" value= @Item.EmailAdd name="Email" placeholder="Update Email" />
<br />
<label id="lblApproved" class="editEmp_label">Overtime Approval</label>
@Html.CheckBox("Approval", @Convert.ToBoolean( @Item.OvertimeApproved))
<br />
<button type="submit" id="btnUpdate" class="button_AdminPanel" style="width:75px" name="btnSubmit">Update</button>
}
存储过程:
PROCEDURE [dbo].[UpdateEmployeeDetails_Sp]
@Emplid int,
@EmplName varchar(40),
@DeptId char(36),
@ShiftId char(40),
@EntryDate char(10),
@Salary varchar(50),
@EmailAdd varchar(50),
@OvertimeApproval bit
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Update HrEmployee
Set EmplName = @EmplName, EntryDate=@EntryDate, BasicSalary=@Salary,
EmailAdd=@EmailAdd, OvertimeApproved= @OvertimeApproval,
DeptID=@DeptId, ShiftID=@ShiftId
where EmplID =@Emplid
END
答案 0 :(得分:1)
将值属性值括在double quots value =“@ Item.EmplName”中。如果名称中有空格,则姓氏(空格后)将成为输入控件的属性,该控件不可见且无法发回。
答案 1 :(得分:1)
如果使用@Html.TextBoxFor()
会更好,这也会处理绑定,而不是使用'value'明确设置文本框值
答案 2 :(得分:0)
鉴于您的所有代码看起来都足够合理,我只能想到几个可能性:
EmplName
的参数长度,因为它更短。