我真的不知道该怎么称号给予了这个问题,但我会在这里解释:通部分查看问题Asp.Net MVC
我有一堆输入字段的视图一张桌子。表格中的每一行都代表一项任务,每一个工作日一栏,每个单元格中的输入字段都会让用户输入工作时间和日期。
然后我有一个提交按钮来发布用户想要保存的时间。但问题在于:每个时间段(作为持有小时数的对象都被调用)也具有属性Description,以便让用户编写关于所报告的特定时间段的完成情况的描述。
那么我怎样才能获得所选时间段输入字段的描述属性,并显示在另一个“描述”输入字段中,然后让用户修改描述并使用timesegment保存它?
这是我到目前为止已经完成:
操作方法来获得描述:
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);
});
});
}
现在,你可以看到,我有解析输入字段的名称属性以获取我之后的对象,这看起来有点像黑客......但这是我能看到获取这些信息的唯一途径。所以我的问题是,是否有另一种更干净的方式来做到这一点?
UPDATE:
下面是一个创建嵌套的输入域环路(完成每项任务的循环,然后每个任务的所有timesegments)的部分:
<% 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>
<% } %>
注意,此代码如果它很重要的话,它是处于局部的。
感谢您的回复。这听起来很有趣,我只是不确定我可以用我的代码来做到这一点......正如你可以从我的更新中看到的那样,输入字段是在局部视图中的一个循环中创建的。所以我不知道如何通过jQuery将数据添加到每个字段,因为它正在此循环中创建? – Anders 2011-01-09 15:45:24