ActionControllerのPOST時にオブジェクトのオブジェクトのインスタンスに設定されていない大きなole 'オブジェクト参照を受信しています。POSTのViewModelのASP.NET MVC - Nullオブジェクト
基本的に、私はuserRequestのIDをrequestResponseと共に保存する必要があります。 (外来キーはこちら)
ここはコードです。
のViewModel:
public class RequestResponseViewModel
{
public Models.Request userRequest { get; set; }
public Models.RequestResponse requestResponse { get; set; }
}
ビュー:デバッグでがここmodel.userRequest.ID
@model UserRequests.ViewModels.RequestResponseViewModel
@{
ViewBag.Title = "Create";
}
<h2>Admin Response to Request</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.requestResponse.Response,
htmlAttributes: new { @class = "control-label col-md-1" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.requestResponse.Response, new {
@class = "form-control", @rows = 5 })
@Html.ValidationMessageFor(model =>
model.requestResponse.Response, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.userRequest.ID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
@Html.DisplayFor(model => model.userRequest.ID)
@Html.ValidationMessageFor(model => model.userRequest.ID, "", new { @class = "text-danger" })
</div>
@Html.LabelFor(model => model.requestResponse.Author, htmlAttributes: new { @class = "control-label col-md-1" })
<div class="col-md-3">
@Html.EditorFor(model => model.requestResponse.Author, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.requestResponse.Author, "", new { @class = "text-danger" })
</div>
@Html.LabelFor(model => model.requestResponse.CreateDate, htmlAttributes: new { @class = "control-label col-md-1" })
<div class="col-md-3">
<h5>@DateTime.Now</h5>
@Html.ValidationMessageFor(model => model.requestResponse.CreateDate, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-1">
<button type="reset" class="btn btn-default">Cancel</button>
<input type="submit" value="Create" class="btn btn-success" />
</div>
</div>
</div>
<hr />
<h3 class="text-success">Original Request</h3>
<div class="row">
<div class="col-md-10">
<h4>@Html.DisplayFor(model => model.userRequest.Title)</h4>
</div>
</div>
<div class="row">
<div class="col-md-10">
<h4>@Html.DisplayFor(model => model.userRequest.Description)</h4>
</div>
</div>
}
<div>
@Html.ActionLink("Back to Browse", "Browse","Change")
</div>
に値がある取得のActionResult:
public ActionResult Create(int id)
{
UserRequestContextDataContext db = new UserRequestContextDataContext();
var request = (from m in db.Requests
where m.ID == id
select new Models.Request()
{
ID = m.ID,
Title = m.Title,
Description = m.Description,
BusinessUnit = m.BusinessUnit,
Author = m.Author,
ModuleName = m.MenuItem,
RequestStatus = 2,
SubmitDate = m.SubmitDate,
Type = m.Type,
UrgencyNum = m.UrgencyLevel
}).FirstOrDefault();
var reqResponse = new Models.RequestResponse();
var viewModel = new RequestResponseViewModel
{
userRequest = request,
requestResponse = reqResponse
};
return View(viewModel);
}
「viewModel」には、必要なものすべてがあります。それは... ActionResultsの間のどこか
を失い、最後にポストのActionResultです:
[HttpPost]
public ActionResult Create(RequestResponseViewModel _requestResponseViewModel)
{
try
{
if (ModelState.IsValid)
{
using (UserRequestContextDataContext db = new UserRequestContextDataContext())
{
RequestResponse reqRes = new RequestResponse();
reqRes.Response = _requestResponseViewModel.requestResponse.Response.ToString();
reqRes.RequestID = _requestResponseViewModel.userRequest.ID;
reqRes.Author = _requestResponseViewModel.requestResponse.Author.ToString();
reqRes.CreateDate = DateTime.Now;
db.RequestResponses.InsertOnSubmit(reqRes);
db.SubmitChanges();
}
}
return RedirectToAction("Browse","Change");
}
catch (Exception ex)
{
return View("Error", new HandleErrorInfo(ex, "Change", "Create"));
}
}
userRequestオブジェクトがPOSTメソッドのビューモデルパラメータのNULLでデバッグモードを使用したが、FINE requestResponseです必要に応じて入力します。
これを検索すると、ほとんどのビューモデルの命名規則に問題があるように見えましたが、そこに矛盾がないことを確認しました。 HTML入力要素を作成しません言及してくださいこのワークフローを行うには、より明確な方法...
エラーのスタックトレースを投稿できますか。 –