Как прочитать значение скрытого поля в представлении MVC3 в блоке кода («@ () и т. Д.») (Много чего перепробовал, но не могу поставить на место) - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть скрытое поле, содержащее значение, и мой блок кода в представлении (внутри @ {}) требует того же.Я пробовал много форматов, пытаясь использовать jquery с @: и т. Д., Но ни один из них не работает.

, поэтому, в основном, если у меня есть скрытое поле со значением ID = "aField", мне потребуетсяего значение как-то связано, скажем, с строковой переменной.

@{ string hiddenValue = //Value from that hidden field }

Спасибо, Ананд

ОБНОВЛЕНИЕ:

Значение в скрытом полеЗаполняется на некоторые действия клиента с использованием Jquery и требуется перед отправкой формы.Следовательно, я не использую сумку вида.Я что-то ошибаюсь или пропускаю?

поэтому я ищу способ, если возможно, использовать jquery для считывания обновленного значения и использовать его.

много пытался включить jquery впоказанный выше блок кода для получения значения, но всегда заканчивается ошибками.

ОБНОВЛЕНИЕ 2:

Реализовано предложение Шойба (спасибо за это) использовать 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 ]

2 голосов
/ 30 декабря 2011
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

С уважением.

0 голосов
/ 30 декабря 2011

Считайте значение из контроллера и поместите его в ViewModel, в которой нуждается ваша страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...