我有一个包含值的隐藏字段,我在视图中的代码块(@ {}内)需要相同的内容。我尝试过很多格式试图在@:等中使用jquery,但不使用它们。
所以基本上如果我有一个ID =“aField”的隐藏字段有一个值,我会以某种方式要求它的值来说我的字符串变量。
@{ string hiddenValue = //Value from that hidden field }
谢谢, 阿南德
更新:
使用Jquery在一些客户端操作上填充隐藏字段的值,在表单提交之前是必需的。因此我没有使用查看包。我错了或遗失了什么?
因此我正在寻找一种方法,如果可能的话,可以使用jquery读回更新的值并使用它。
尝试了很多,在上面显示的代码块中包含jquery来获取值,但总是出错。
更新2:
实施了Shoib的建议(感谢你)使用Ajax并在viewbag中更新它并将其用于我的需求,同时使用断点我看到ViewBag已更新我在表单中使用的值。
我偶然发现的下一件事是,在浏览器上我仍然没有看到所选的值。它只显示旧的价值。渲染过程中我的更新丢失了吗?它只是渲染旧的HTML吗?任何帮助表示赞赏
下面是我的脚本。服务器端我只是用这个确认有效的值更新ViewBAg属性。
function setHiddenFieldValue(buttonEditClicked)
{
$('#contactIdHiddenFld').val("");
$('#contactIdHiddenFld').val(buttonEditClicked.title) ;
alert($('#contactIdHiddenFld').val());
$.ajax({
url: "@Url.Action("SetPartnerProfileContactID", "PartnerManagement")",
data: {partnerContactID: $("#contactIdHiddenFld").val()},
dataType: 'html',
cache: false,
type: "POST",
error: function() {
alert("An error occurred.");
},
success: function(result) {
jQuery.validator.unobtrusive.parse('EditContactForm');
Sys.Mvc.FormContext._Application_Load();
var windowElement = $('#EditContactWindow');
windowElement.data('tWindow').center().open();
}
});
此处还有一个表格片段。
@using (Html.BeginForm("GetProfile", "PeopleManagement", FormMethod.Post, new { id = "EditContactForm" }))
{
<p class="note">
Please Enter the contact details below</p>
<table border="0" cellpadding="0" cellspacing="0" id="EditContactsTable">
@{
string toCheck = ViewBag.ContactIDToEdit;
int count = (from n in Model.PartnerDetails.Contacts where n.PrimaryContactId==toCheck select n).Count();
}
<tr>
<td class="table_label_cell" width="20%" >
<font color="red">*</font><label for="firstname">@ViewResources.PartnerManagement.GetPartnerProfile.FirstName :</label>
</td>
<td class="table_value_cell" width="40%">
@Html.TextBoxFor(m => m.PartnerDetails.Contacts[count].PrimaryContacts.FirstName)
</td>
<td class="table_value_cell" width="40%">
@Html.ValidationMessageFor(e => e.PartnerDetails.Contacts[count].PrimaryContacts.FirstName)
</td>
</tr>
<tr>
<td class="table_label_cell" width="20%">
<font color="red">*</font><label for="lastname">@ViewResources.PartnerManagement.GetPartnerProfile.LastName :</label>
</td>
<td class="table_value_cell" width="40%">
@Html.TextBoxFor(m => m.PartnerDetails.Contacts[count].PrimaryContacts.LastName)
</td>
<td class="table_value_cell" width="40%">
@Html.ValidationMessageFor(e => e.PartnerDetails.Contacts[count].PrimaryContacts.LastName)
</td>
</tr>
答案 0 :(得分:2)
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.hfMyField = Request.Form["hfMyField"];
return View();
}
这样你可以在视图中访问它。
<h4>@ViewBag.hfMyField</h4>
有关viewbag和其他选项的更多详细信息: http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
问候。
答案 1 :(得分:0)
从控制器中读取值并将其放入您的页面所需的ViewModel中。