3
根據我的同事的代碼,他是通過HTML屬性到他在使用BeginForm視圖形式申報和生成的HTML看起來像:如何從<form>標籤獲取價值?
<form action="/Reviewer/Complete" ipbID="16743" method="post">
我怎麼能在我的控制器代碼獲得ipbID?我想
HttpContext.Request.QueryString["ipbID"]
......還有......
Request.Form["ipbID"]
,我甚至已經進入了調試和通過的Request.Form我所能的每一個部分去看看是否值不知何故。在表單標籤中放置諸如此類的值不是一種好的做法嗎?任何和所有的幫助表示讚賞。謝謝。
更新: 我應該通知大家,這個表格正在應用於一個單元格。單元格在數據表中。當我使用它時,返回隱藏的第一個值,但是沒有後面的值。
更新2: 查看
<% Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<PTA.Models.IPB>>" %>
<%@ Import Namespace="PTA.Helpers"%>
<b>Assigned IPBs</b>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#sharedIPBGrid').dataTable();
});
</script>
<%
if (Model != null && Model.Count() > 0)
{
%>
<table id="sharedIPBGrid" class="display">
<thead>
<tr>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().IPBName) %>
</th>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().Status) %>
</th>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().PubDate) %>
</th>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().ChangeDate) %>
</th>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().Priority) %>
</th>
<th>
<%=Html.LabelFor(m => m.FirstOrDefault().Errors) %>
</th>
<th>
Start
</th>
<th>
Stop
</th>
<th>
Complete
</th>
</tr>
</thead>
<tbody>
<tr>
<%
foreach(IPB ipb in Model)
{
%>
//Ignoring everything except for the Complete button as there's a lot of logic in there.
<td>
<%
if (ipb.StatusID == (int)PTA.Helpers.Constants.State.InWorkActive)
{
using (Html.BeginForm("Complete", "Reviewer", FormMethod.Post, new {ipbID = ipb.ID}))
{
%>
<%=Html.Hidden("ipbID", ipb.ID)%>
<input type="submit" id="btnComplete" value="Complete" />
<%
}
}
%>
</td>
<%
}
%>
</tr>
</tbody>
</table>
<%
}
else
{
Response.Write("No IPBs found!");
}
%>
查看我的更新。我嘗試了隱藏功能,但因爲我將表格封裝在表格的一個單元格中,並且需要特定行的ipbID,所以它不起作用。它返回第一個ipbID,但是如果我選擇第五行,則不是第五個ipbID。 – XstreamINsanity 2010-08-18 13:25:34
'不要做你的同事。這是錯的,AMEN! – 2010-08-18 13:25:36
然後,您需要編寫您的邏輯,以便將正確的ID放入隱藏輸入中(即與窗體所在行相關的那個)。 – Quentin 2010-08-18 13:27:08