2010-06-23 6 views
0

можно ли получить доступ к значениям скрытых переменных в ActionResult контроллера, если значение скрытой переменной установлено в javascript?можно получить доступ к скрытым переменным в контроллере в MVC

+1

, о которой вы говорите? – Sarfraz

+0

ASP.NET MVC 1.0 Фактически я буду устанавливать некоторые вычисленные значения для некоторых скрытых переменных в jquery, можно ли получить эти переменные в ActionResult контроллера? – vinay

ответ

1

Если вы имеете в виду ASP.NET MVC, а скрытая переменная, о которой вы упоминаете, на самом деле является скрытым полем в форме, отправляемой в контроллер, тогда да.

Это частый шаблон в приложениях, которые я пишу. Скажем, например, что вы редактируете детали человека. Форма, которую вы заполняете, будет содержать видимые поля для таких вещей, как имя, возраст и т. Д., Но также необходимо иметь скрытую папку, содержащую идентификатор человека, для которого вы редактируете детали.

Если это тот тип сценария, который вы используете, то скрытое поле доступно контроллеру так же, как и поля возраста &.

EDIT: В дополнение к вашему последующему комментарию, похоже, что вы имеете в виду переменные javascript. Если это так, то они недоступны для контроллера напрямую, но это можно организовать, вставив переменную (переменные) в форму.

//Javaacript 
var myVariable = calculateSomeValue(); 
$("#myFormField").val(myVariable); 
... 
//HTML 
<form action="..." method="post"> 
    <input type="hidden" name="myFormField" id="myFormField"/> 
    ... 
</form> 
... 
//Controller code 
ActionResult MyControllerAction(string myFormField, ...){ 
    DoSomethingWith(myFormField); 
} 

Если это не поможет, можете ли вы разместить пример кода?

+0

Фактически я буду устанавливать некоторые вычисленные значения для скрытых полей. Я хочу, чтобы эти значения были доступны в ActionResult контроллера. Это возможно? не могли бы вы поделиться более подробной информацией/ссылками по этому поводу ... – vinay

+0

Мое сообщение в значительной степени суммирует его - вычисляет некоторые значения, помещает их в скрытые поля и определяет эти поля в качестве аргументов для вашего метода Action. Не знаете, насколько проще это могло быть? – belugabob

+0

belugabob .. thnx для ваших быстрых ответов. ограничение, которое у меня есть, заключается в том, что для создания отчета в формате pdf будет доступно более 25 параметров. в этом случае, если все эти значения передаются как аргументы, то URL-адрес не будет дружественным. по этой причине я подумывал установить эти значения в скрытых переменных и получить доступ к ним в контроллере, как это делается в наших обычных веб-приложениях asp. , если у вас есть другой лучший подход для достижения этого, предложите PLZ. – vinay

3

Когда вы отправляете данные контроллеру, содержимое всей формы (включая скрытые поля) может быть отправлено. Цель скрытого поля - скрыть его в клиенте, а не когда данные отправляются на сервер. Форма данные упаковываются в POST и отправляются на сервер, независимо от того, как он заполняется, так что вы можете использовать JQuery для заполнения поля просто отлично ...

Учитывая эту форму:

<% Html.BeginForm(); %> 
    <input type="hidden" id="catID" name="catID" /> 
<% Html.EndForm(); %> 

Вы можете обрабатывать его в качестве параметра маршрута:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult DoSomething(string catID) 
{ 
    // Do stuff here... 
} 

Или, как предмет экземпляра FormCollection:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult DoSomething(FormCollection form) 
{ 
    string catID = form["catID"]; 

    // Do stuff here... 
} 

Или даже в качестве модели ввода:

public class MyInputModel 
{ 
    public string catID; 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult DoSomething(MyInputModel input) 
{ 
    string catID = input.catID; 

    // Do stuff here... 
} 
+0

Я буду устанавливать значения в скрытую переменную вроде этого $ ('#catID'). val ('asd') в клиентской функции(), которая будет вызываться из HTML.ActionLink. Теперь можно получить доступ к «catID» в ActionResult? Если да, не могли бы вы дать некоторые синтаксис/код для этого? Thnx .. – vinay

+0

Пример обновлен :) –

Смежные вопросы