나는이 것을 파악하지 못하는 것 같아서 간단하다고 생각합니다. "Update/Save"버튼을 누를 때마다 코드는 {get; set}을 수행하기 위해 Order 클래스로 이동합니다. 그러나, 그것은 오류를 일으키는 "null"로 내 PhonePrimary 필드를 전달합니다.POST 요청 및 설정 동작 MVC
다음은 다음은 Order 클래스 인 EditOrder.cshtml 페이지
@using (Html.BeginForm())
{
<div class="form-group-PhonePrimary">
<div class="input-group" style="border-right:0px">
<span class="input-group-addon" style="text-align: left; border-right: 0px; min-width: 115px">Phone #</span>
@Html.TextBoxFor(model => model.order.PhonePrimary, new { @class = "form-control", @maxlength = "13" })
@Html.ValidationMessageFor(model => model.order.PhonePrimary)
</div>
</div>
<div class="form-group" style="padding-left:5px">
<div class="btnUpdateSave">
<input type="submit" value="Update/Save" class="btn btn-primary col-md-10" />
</div>
</div>
}
입니다. 여기
public class Order
{
private string _PhonePrimary;
[DisplayName("Phone Primary")]
public string PhonePrimary
{
get
{
//this._PhonePrimary = BeautifyPhoneNumber(this._PhonePrimary);
return BeautifyPhoneNumber(this._PhonePrimary);
}
set
{
this._PhonePrimary = value;
}
}
}
는 EditOrder.cshtml 페이지에서 사용되고있는 EditOrderViewModel SchedulingController.cs 이하이다 httpget 및 httppost
public class EditOrderViewModel
{
public Order order { get; set; }
public List<Status> StatusOptions { get; set; }
public IEnumerable<Document> Documents { get; set; }
public IEnumerable<Notary> Notaries { get; set; }
public Notary NotaryAssigned { get; set; }
}
[HttpGet]
public ActionResult EditOrder(int id)
{
var model = repositoryScheduling.Order_FindById(id);//returns EditOrderViewModel
model.NotaryAssigned = repositoryScheduling.Notary_FindAssignedNotary(model.order.Id);
return View(model);
}
[HttpPost]
public ActionResult EditOrder(EditOrderViewModel orderModel)
{
try
{
repositoryScheduling.Order_Update(orderModel);
return RedirectToAction("OrderIndex");
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
return View();
}
}
여기 Order_FindById 함수 인 SchedulingREpository.cs에 있습니다. Dapper를 사용하여 SQL 명령을 도와줍니다.
public EditOrderViewModel Order_FindById(int id)
{
var parameters = new DynamicParameters();
parameters.Add("@ID", value: id);
var query = @"long query string that i dont want to put";
using (var multi = this.db.QueryMultiple(query, parameters))
{
EditOrderViewModel editVM = new EditOrderViewModel();
editVM.order = multi.Read<Order>().SingleOrDefault();
editVM.StatusOptions = multi.Read<Status>().ToList();
editVM.Documents = multi.Read<Document>().ToList();
return editVM;
}
}
내가 대신 현재의 코드 (model.order.PhonePrimary
)에서 하나의 model.order._PhonePrimary
를 사용하도록 전환 할 때마다. 오류 메시지는 나타나지 않지만 내 BeautifyNumber()
이 실행되지 않습니다.
피들러 (Fiddler) 또는 유사한 것을 실행하여 서버로 다시 전송되는 것을 확인해 보셨습니까? 그렇다면 폼에서 null입니까? 아니면 컨트롤러의 액션 매개 변수를 채우지 못합니까? – Bill
OP와 동일한 코드를 사용하면 Fiddler의 TextView에서이 코드를 얻을 수 있습니다. - & order.PhonePrimary = % 28883 % 29 + 332-9302 +> 그러나 Order 클래스에서 PhonePrimary 변수에 'PhonePrimary'예외가 발생했습니다. 'System.ArgumentNullException'형식의 값 = 값은 null 일 수 없습니다. 매개 변수 이름 : 입력 – MaylorTaylor
"주문"은 모델의 속성입니까? 그렇다면 모델을보기에 할당하기 전에 Order 속성을 인스턴스화하고 있습니까? 내가 의미하는 바를 보여주기 위해 코드로 답을 제출할 것입니다. – Bill