0
MVC 3.0에서 내 코드와 관련이있는 문제가 발생했지만 회사를 떠난 사람이 코드를 수정하여 실수 한 것으로 보입니다 내가 알아 내지 못하는 무언가. I는 다음과 같습니다 컨트롤러가 있습니다숨겨진 필드를 MVC에서 동일한 값으로 채우는 것을 봅니다
직접 보고서 후보 데이터베이스 클래스
/// <summary>
/// Gets currently logged in user's direct reports nominees
/// </summary>
/// <returns></returns>
[HttpGet]
public ViewResult DirectReportNominees()
{
this.nominationRepository = new NominationRowsRepository("Data Source=" + MvcApplication.SERVER_NAME + "; Initial Catalog=Cinet;Integrated Security=True",
_currentuser.SAMAccountName);
return View(nominationRepository.GetDirectReportNominees);
}
/// <summary>
/// Overload that triggers when supervisor clicks
/// Approve or Reject on Direct Report page
/// </summary>
/// <param name="submitButton"> button triggered to accept or Reject nomination</param>
/// <param name="NominationID">ID of nomination to change status of</param>
/// <returns></returns>
[HttpPost]
public ViewResult DirectReportNominees(string submitButton, string NominationID)
{
this.nominationRepository = new NominationRowsRepository("Data Source=" + MvcApplication.SERVER_NAME + "; Initial Catalog=Cinet;Integrated Security=True",
_currentuser.SAMAccountName);
switch (submitButton)
{
case "Accept":
NominationRow nomination = nominationRepository.GetNomination(NominationID);
Employee nominatedUser = _adRepository.GetDirectoryUserInfo(nomination.NomineeLogin);
// the email is sent from inside the repository
nominationRepository.AcceptNomination(NominationID, nominatedUser);
break;
case "Reject":
nominationRepository.RejectNomination(NominationID);
break;
default:
break;
}
NominationID = "";
return View(nominationRepository.GetDirectReportNominees);
}
Controllergathers A는 로그인 한 사용자 주어진 관련 다양한 후보가보고를하고 아래보기
로 전송은보기는 다음과 같습니다
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<CINet.Areas.CAP.Models.CapDomain.Repositories.NominationStruct>>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server">
<%--<%: CINet.Views.Helpers.CssHelper.Css(Html, "~/Areas/CAP/Styles/Cap.css") %>--%>
<link rel="Stylesheet" type="text/css" href="<%: Url.Content("~/Areas/CAP/Styles/Cap.css") %>" />
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<div id="outsidewrapper">
<div id="picture"></div>
<div id="insidewrapper">
<div id="navcontainer">
<% Html.RenderAction("Navigation", "Cap"); %>
</div>
<div id="CapsDashboard">
<h3>Direct Report Nominees</h3>
<table>
<colgroup>
<col id="nominee" />
<col id="nominatedBy" />
<col id="reason" />
<col id="status" />
</colgroup>
<thead>
<th scope="col">Name</th>
<th scope="col">Nominated By</th>
<th scope="col">Reason</th>
<th scope="col">Status</th>
<th></th>
</thead>
<tbody>
<% foreach (var nomination in Model) { %>
<tr>
<td><%: nomination.NomineeLogin %></td>
<td><%: nomination.NominatedBy %></td>
<td><%: nomination.NominationReason %></td>
<td><%: nomination.NominationStatus %></td>
<td>
<% if (nomination.NominationStatus == "Pending")
{ %>
<%--Create Accept Button--%>
<% Html.BeginForm("DirectReportNominees", "Cap", FormMethod.Post); %>
<%: Html.Hidden("NominationID", nomination.NominationID.ToString()) %>
<input type="submit" name="submitButton" value="Accept" />
<% Html.EndForm(); %>
<%--Create Reject Button--%>
<% Html.BeginForm("DirectReportNominees", "Cap", FormMethod.Post); %>
<%: Html.Hidden("NominationID", nomination.NominationID.ToString()) %>
<input type="submit" name="submitButton" value="Reject" />
<% Html.EndForm(); %>
<% } %>
</td>
</tr>
<%--</div>--%>
<% } %>
</tbody>
</table>
</div>
</div>
</div>
</asp:Content>
분명히 이것은 SiteMaster 내부에 캡슐화된다. 보기는 모델을 채택하고 거부 및 승인 버튼과 함께 지정된 사용자에 관한 다양한 정보를 제공합니다. 이 단추 값은 사용자가 원하는 특정 항목으로 설정해야하며 숨겨진 입력 필드가 있습니다. 값은 데이터베이스를 통해 수신되는 후보 GUID입니다. 첫 번째 라운드는 훌륭하지만, 작업이 완료된 후 HttpPost에서보기가 반환되면 모든 숨겨진 값이 이제 동일한 값 (GUID)을 갖습니다. 이 값은 방금 승인/거부 된 GUID 또는 행과 항상 동일하게 발생합니다. 이 가치를 지닐 수있는 것에 대한 아이디어가 있습니까? 프로그래머가 사용하는 ViewData가 없으며 View에 오류가 없습니다. 나는 포스트가 돌아 왔을 때 View의 foreach 루프를 밟아 보려고 시도했다.하지만 그들은 모두 다르다. 그러나 브라우저에 도착할 때까지는 모두 같은 값을 쳤다. ?? 매우 이상하고 어렵다.
제안 사항
public class NominationStruct
{
public string NominationID; // unique ID in DB
public string NomineeLogin;
public string NominationReason;
public string NominationReasonWithBreaks;
public string NominatedBy;
public string NominationStatus;
}
그리고 모델은 다음과 같습니다 :보기가에서 점점
더 클래스는 내 질문은 또 다른 포스트를 통해 답변을 받았습니다
public class NominationsListViewModel
{
public IList<NominationRow> NominationRows { get; set; }
public string CurrentTab { get; set; }
}