Asp.Net MVC에서 문제를 보는,하지만 난 여기에 설명하겠습니다 :패스 부분은 정말이 질문을주고 어떤 제목 몰랐다
내가 입력 필드의 무리와보기를 테이블. 테이블의 각 행은 작업을 나타내고 각 열은 평일이며 각 셀의 입력 필드는 사용자가 해당 작업 및 요일에 대해 근무한 시간을 입력하게합니다.
사용자가 저장하려고하는 시간을 게시하는 제출 버튼이 있습니다. 하지만 여기에 문제가 있습니다. 각 시간대 (시간을 보유하는 객체와 같이)에는 설명 된 속성이있어 사용자가보고 된 특정 시간 세그먼트에 대해 수행 된 작업에 대한 설명을 쓸 수 있습니다.
그렇다면 선택한 시간 세그먼트 입력 필드에 대한 설명 속성을 가져 와서 다른 "설명"입력 필드에 표시 한 다음 설명을 수정하고 시간대와 함께 저장하게하려면 어떻게해야합니까? 여기
내가 지금까지 한 일이다 :public ActionResult GetDescription(string name, int number, int year)
{
try
{
int taskId = Int32.Parse(name.SubstringAfter("Tasks[").Substring(0, 1));
int timeSegmentId = Int32.Parse(name.SubstringAfter("CurrentTimeSegments[").Substring(0, 1));
List<Task> tasks = _repository.GetCurrentTasks(number, year);
var description = tasks[taskId].CurrentTimeSegments[timeSegmentId].Description;
return Content(description);
}
catch (Exception)
{
return Content("");
}
}
jQuery를 :
의 조치 방법이 설명을 얻을 당신이 볼 수 있듯이, 이제
function getDescription() {
$('.hourInput').focus(function() {
var name = $(this).attr('name');
var number = '<%: Model.WeekNumber %>';
var year = '<%: Model.Year %>';
var url = '<%=Url.Action("GetDescription", "Timesheet") %>';
$.get(url, { name: name, number: number, year: year }, function (data) {
$('#description').val(data);
});
});
}
을, 나는에있다 입력 필드의 name 속성을 파싱하여 내가 가지고있는 객체를 가져오고 이것은 약간의 해킹처럼 보입니다 ... 그러나이 정보를 얻기 위해 볼 수있는 유일한 방법입니다. 그래서 내 질문에, 거기에 또 다른 청소기 방법이 무엇입니까?
는 UPDATE :
<% for (int i = 0; i < Model.Tasks.Count; i++)
{
var task = Model.Tasks[i];
%>
<tr class="taskrow">
<td>
<input type="button" value="Delete" id="<%:i %>" class="deletebutton" />
</td>
<td class="customer">
<%: task.Project.Customer.Name %>
</td>
<td class="project">
<%: task.Project.Name %>
</td>
<td class="task">
<%: task.Name %>
</td>
<% for (int j = 0; j < task.CurrentTimeSegments.Count; j++)
{ %>
<td>
<%: Html.TextBoxFor(model => model.Tasks[i].CurrentTimeSegments[j].TimeSpanHours, new { @class = "hourInput" })%>
<%: Html.ValidationMessageFor(model => model.Tasks[i].CurrentTimeSegments[j].TimeSpanHours)%>
</td>
<% } %>
<td class="hourSum"><%:task.WeekTaskHours %></td>
</tr>
<% } %>
주 코드한다 : 여기서
는 루프 중첩의 입력 필드 (모든 timesegments 각 태스크에 각각의 작업을 반복하는 등)를 만드는 부분 중요하다면 부분보기에 있습니다.
답장을 보내 주셔서 감사합니다. 흥미로운 것 같습니다. 내 코드로이 작업을 수행 할 수 있는지 확신 할 수 없습니다 ...내 업데이트에서 볼 수 있듯이 입력 필드는 부분 뷰의 루프에 만들어집니다. 따라서이 루프 내에서 jQuery를 통해 각 필드에 데이터를 추가하는 방법을 알지 못합니다. – Anders
입력 상자에 데이터를 초기화하는 방법을 제공하기 위해 필자의 대답을 편집했습니다. 그러나 당신이 HTML 안에 스크립트를 넣었 기 때문에 나는 그것을 정말로 좋아하지 않는다 ... –
글쎄, 그게 내가 이미 가지고있는 것보다 나을 것 같지 않고, jQuery에서 전문가가 아니지만, 그것이 작동하는 방법을 보지 마라 - (document) .ready 함수는 내가 아는 한 문서가 처음로드 될 때만 실행된다. – Anders