【发布时间】:2019-07-20 01:24:49
【问题描述】:
我正在尝试使用 Razor 在 ASP.Net Core 中实现更新/编辑功能。下面是查看页面。
单击提交按钮后,视图页面将发布到控制器的“GetCustomerForEdit”方法,如下面的代码中所述。但不幸的是,视图中的编辑数据没有传输到控制器方法“GetCustomerForEdit”,参数“EditCustomer”类型为“GetAllCustDetails”。
由于我是 ASP.net Core 的新手,我是否在 View 或 Controller 中遗漏了一些东西或做得不对?
查看代码:
<form asp-action="GetCustomerForEdit">
<div>
<table class="tables1">
@foreach (var item in Model.Custs)
{
<tr>
<th style="width:300px;" colspan="2">Update Customers
Details</th>
</tr>
<tr style="visibility:hidden">
<td><input asp-for="@item.CustomerId" type="hidden" />/td>
</tr>
<tr>
<td>First Name</td>
<td><input asp-for="@item.FirstName" autofocus
class="textbox1" /></td>
</tr>
<tr>
<td>Last Name</td>
<td><input asp-for="@item.LastName" class="textbox1" />
</td>
</tr>
<tr>
<td>Sex</td>
<td><select asp-for="@item.Sex" class="textbox1" asp-
items="@(new SelectList(ViewBag.listofitems, "Sex", "Sex"))"></select>
</td>
</tr>
<tr>
<td>Age</td>
<td><input asp-for="@item.Age" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td style="width: 177px">Address1</td>
<td><input asp-for="@item.Address1" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>Address2</td>
<td><input asp-for="@item.Address2" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>State</td>
<td><input asp-for="@item.State" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>City</td>
<td><input asp-for="@item.City" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>Pin</td>
<td><input asp-for="@item.Pin" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>Phone</td>
<td><input asp-for="@item.Phone" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>Mobile</td>
<td><input asp-for="@item.Mobile" class="textbox1"
type="text" /></td>
</tr>
<tr>
<td>Email</td>
<td><input asp-for="@item.Email" class="textbox1"
type="text" /></td>
</tr>
}
<tr class="trfooter">
<td colspan="2">
<input class="submit" type="submit" value="Save" />
<input type="reset" class="submit" value="Reset" />
<input type="button" class="submit" value="Cancel" />
</td>
</tr>
</table>
@if (TempData["RecordSave"] != null)
{
<p>@TempData["RecordSave"]</p>
}
</div>
</form>
型号代码:
public class GetAllCustDetails
{
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Customer> Custs;
}
客户模型在哪里:
public class Customer
{
public int CustomerId { get; set; }
[Required(ErrorMessage =" Please enter First Name!")]
public string FirstName { get; set; }
[Required(ErrorMessage =" Please enter Last Name!")]
public string LastName { get; set; }
[Required(ErrorMessage =" Please enter Sex!")]
public string Sex { get; set; }
[Range(0,99)]
[Required(ErrorMessage =" Please enter valid Age!")]
public int Age { get; set; }
[Required(ErrorMessage =" Please enter valid Adddress!")]
public string Address1 { get; set; }
public string Address2 { get; set; }
[Required(ErrorMessage =" Please enter State!")]
public string State { get; set; }
[Required(ErrorMessage =" Please enter valid State!")]
public string City { get; set; }
[Required(ErrorMessage =" Please enter valid Pin!")]
public int Pin { set; get; }
public long Phone { set; get; }
public long Mobile { get; set; }
[EmailAddress(ErrorMessage =" Please enter valid Email!")]
[Required(ErrorMessage = "Email is required field!")]
public string Email { get; set; }
}
控制器代码:[HttpGet 工作正常]
[HttpGet]
public IActionResult GetCustomerForEdit(Int16? Id)
{
GetAllCustDetails getCustForEdit;
clsCustomerDAL getCust;
getCust = new clsCustomerDAL();
getCustForEdit = getCust.GetCustomerForUpdate(Id);
SexDropDown();// this is dropdown getting populated from DB
return View(getCustForEdit);
}
[HttpPost]
public IActionResult GetCustomerForEdit([Bind] GetAllCustDetails
EditCustomer)
{
bool retVal = false;
int CustId = 0;
string Fname;
string Lname;
if(ModelState.IsValid)
{
clsCustomerDAL updateCust = new clsCustomerDAL();
retVal = updateCust.DALEditCustomer(EditCustomer);
if(retVal == true)
{
ModelState.Clear();
}
return View("getCustomerDetails");
}
return View("IndexPage");
}
【问题讨论】:
标签: asp.net-core