현재 테이블의 특정 행에 대한 업데이트를 수행하려고합니다. 예를 들어 한 페이지에서 모든 데이터를 검색하여 WebGrid
에 표시했습니다.ASP.NET MVC 5의 모델 오류
WebGrid
에는 Update
이라고하는 button
이있는 열을 추가했습니다. 사용자는 Update
버튼을 클릭하고 다른 페이지로 리디렉션되어 세부 정보를 업데이트합니다.
그러나 Update
을 클릭 할 때마다이 오류가 발생합니다.
사전에 전달 모델 항목 유형 하다 '는 System.Collections.Generic.List`1 [ACIFYPJ.Models.Response] 있지만 사전 형'ACIFYPJ.Models의 모델 아이템을 필요 .응답'.
이것은 내 코드입니다.
내 컨트롤러 코드 WebGrid
@model ACIFYPJ.Models.Response
@{
ViewBag.Title = "Send your Response";
}
<h2>Feedback Form</h2>
@using (Html.BeginForm("ResponseFeedBack", "Course", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4></h4>
<hr />
<div class="form-group">
@Html.LabelFor(model => model.responseID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.responseID, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.responseID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.message, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.message, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.message, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.status, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.status, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.status, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.answer, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.answer, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.answer, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to Home", "Index")
</div>
에 Update
버튼을 클릭 한 후
@model List<ACIFYPJ.Models.Response>
@{
ViewBag.Title = "List Of Responses";
Layout = "~/Views/Shared/_Layout.cshtml";
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 5);
grid.Pager(WebGridPagerModes.All);
}
<h2 style="margin-bottom: 3%; margin-top: 3%;">List Of Responses</h2>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(document).ready(function() {
$("#responseFeedBack").click(function() {
var tr = $(this).parents('tr:first');
var responseID = tr.find("#responseID").text();
alert(responseID);
var ResponseModel = {
"responseID": responseID
};
$.ajax({
url: '@Url.Action("ResponseFeedBack", "Course")',
type: 'POST',
data: {
"responseID": responseID
},
async: false,
dataType: 'text',
success: function (data) {
}
});
});
});
</script>
<div id="content">
@grid.GetHtml(
fillEmptyRows: false,
tableStyle: "webgrid-table",
headerStyle: "webgrid-header",
footerStyle: "webgrid-footer",
alternatingRowStyle: "webgrid-alternating-row",
selectedRowStyle: "webgrid-selected-row",
rowStyle: "webgrid-row-style",
mode: WebGridPagerModes.All,
firstText: "<< First",
previousText: "<Prev",
nextText: "Next >",
lastText: "Last >>",
columns: grid.Columns(
grid.Column("responseID", "Response ID", format: @<text><span class="display-mode" id="responseID">@item.responseID</span></text>),
grid.Column("name", "Sender's Name", format: @<text><span id="senderName" class="display-mode">@item.Name</span></text>),
grid.Column("message", "Message", format: @<text><span class="display-mode"><label id="lblMessage">@item.message</label></span>
</text>),
grid.Column("status", "Message Status", format: @<text><span class="display-mode"><label id="lblStatus">@item.status</label></span>
</text>),
grid.Column("answer", "Answer", format: @<text><span class="display-mode"><label id="lblAnswer">@item.answer</label></span>
</text>),
grid.Column("", format: @<text>
<button id="responseFeedBack">Reply</button>
</text>, style: "col3Width", canSort: false)
))
</div>
<div style="margin-top: 2%;">
@Html.ActionLink("Back to Home", "AdminIndex", "Home")
</div>
사용자가이 페이지로 리디렉션 될 모든 datas를 표시하는 Webgrid를 포함하는 페이지
public ActionResult ViewAllResponse()
{
var responses = new List<Response>();
using (ACIFYPJEntities aci = new ACIFYPJEntities())
{
responses = aci.Responses.ToList();
}
return View(responses);
}
public ActionResult ResponseFeedBack(int responseID)
{
var responses = new List<Response>();
using (ACIFYPJEntities aci = new ACIFYPJEntities())
{
responses = (from c in aci.Responses
where c.responseID == responseID
select c).ToList();
}
return View(responses);
}
돌아 가기보기 (응답)로 인해 업데이트를 클릭 한 후 정확하게 표시된 페이지가 무엇입니까? 방법 당신은 반환보기 (응답); Response 유형 목록이지만보기에는 @model ACIFYPJ.Models.Response가 있습니다. 리디렉션 된보기에서 정확히 필요한 것을 기반으로 그 중 하나를 변경해야합니다. –
'ViewAllResponse'인 첫 번째보기에는 webgrid가 표시됩니다. webgrid에는 'Update'버튼이 있습니다. 'Update' 버튼을 클릭하면 사용자는'ResponseFeedBack' 뷰로 방향이 바뀌게됩니다. 이보기는 사용자가 클릭 한 '행'을 기반으로 정보를 보여줍니다. @RaviA. – Alvin
@RaviA. 오랫동안 노력해 왔지만이 문제를 해결할 수 없었습니다. 도와주세요, 고마워요! – Alvin