Я пытаюсь реализовать функцию обновления / редактирования в ASP.Net Core с помощью Razor.Ниже приведена страница просмотра.
После нажатия кнопки «Отправить» страница просмотра помещается в метод «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");
}