如何在代码块(“@()等”中读取MVC3视图中的隐藏字段值(尝试过很多东西,但不能放到位)

时间:2011-12-30 05:22:38

标签: jquery asp.net-mvc-3 .net-4.0

我有一个包含值的隐藏字段,我在视图中的代码块(@ {}内)需要相同的内容。我尝试过很多格式试图在@:等中使用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>

2 个答案:

答案 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中。