2013-08-08 15 views
10

Devo passare i valori archiviati nascosti all'azione del controller. Così ho provato nel modo seguente, ma sto ottenendo valori nulli.Come utilizzare i valori dei campi nascosti dalla vista al controller in asp.net mvc 3

ho provato entrambi i metodi cioè FormCollection e il concetto ViewModel

controller

public ActionResult MapIcon() 
{ 
    Hidden hd = new Hidden(); 
    return View(hd); 
} 

[HttpPost] 
public ActionResult MapIcon(Hidden hidden) 
{ 
    var value=hidden.hiddevalue;//null 
    FormCollection col = new FormCollection(); 
    var value = col["hidden1"]; 
    // string value = mycontroler.ControlName; 

    return View(hidden); 
} 

View

@model SVGImageUpload.Models.Hidden 
Razor view:@using (Html.BeginForm(new { id = "postform" })) 
{ 
    <input type="hidden" id="" value="7" name="hidden1" /> 
    <input type="hidden" id="" value="7" name="hidden2"/> 

    <input type="submit" value="Match"/> 
} 

ViewModel

public class Hidden 
{ 
    public string hiddevalue { get; set; } 
} 
+0

@mattytommo non sto prendendo i valori dal database quindi non ho la classe del modello. Ho solo il modello della vista. Le mie preoccupazioni principali è come inserire i valori del campo di input i.e 7 nel mio esempio. È possibile? – user2663526

risposta

8

Mi sembra come si sta cercando di ottenere più valori nel controllore POST. In tal caso, e dal tuo esame, il valore dall'input nascosto è sufficiente. In tal caso, è possibile impostare il controller come così:

public ActionResult Index() 
{ 
    Hidden hd = new Hidden(); 
    return View(hd); 
} 

[HttpPost] 
public ActionResult Index(IEnumerable<string> hiddens) 
{ 
    foreach (var item in hiddens) 
    { 
     //do whatter with item 
    } 
    return View(new Hidden()); 
} 

e per quanto riguarda la visualizzazione, semplice cambiamento esso al fine di impegnare allo stesso nome "hiddens", come così:

@using (Html.BeginForm(new { id = "postform" })) 
{ 
    <input type="hidden" value="7" name="hiddens" /> 
    <input type="hidden" value="2" name="hiddens" /> 

    <input type="submit" value="Match" /> 
} 

Speranza questo serve quello che non vedi l'ora.

9

Prova questo, in vista del rasoio:

@using (Html.BeginForm(new { id = "postform" })) 
{ 
     @Html.HiddenFor(m=>m.hiddevalue) 
    <input type="submit" value="Match"/> 
} 
+1

come ottengo i valori di hiddenvalue .AS non sto prendendo questi valori dal database. – user2663526

+0

quando si invia il modulo, MVC ModelBinders raccoglierà automaticamente il valore da "@ Html.HiddenFor" e lo invierà al metodo di azione. Quindi trasmetterà il valore in "@ Html.HiddenFor" al tipo di oggetto Nascosto. Questo accade perché stai digitando fortemente la vista del modello di visualizzazione. – tranceporter

3

se il valore nascosto è static.Than provare questo

View

@using (Html.BeginForm(new { id = "postform" })) 
{ 


@Html.HiddenFor(m=>m.hiddevalue) 
    <input type="hidden" id="" value="7" name="hidden1" /> 
    <input type="hidden" id="" value="7" name="hidden2"/> 

    <input type="submit" value="Match"/> 
} 

controller

[HttpPost] 
public ActionResult MapIcon(Hidden hidden, string hidden1, string hidden2) 
{ 
    var hiddenvalue = hidden.hiddevalue; 
    var hiddenvalue1 = hidden1; 
    var hiddenvalue2 = hidden2; 
    var value=hidden.hiddevalue;//null 
    FormCollection col = new FormCollection(); 
    var value = col["hidden1"]; 
    // string value = mycontroler.ControlName; 

    return View(hidden); 
} 

Script

$(document).ready(function() { 

$('#hiddevalue').val("Jaimin"); 

}); 
+1

la tua idea va bene ma il mio problema è un po 'diverso – user2663526

+0

la tua idea va bene ma il mio problema è un po' diverso lasciatemi spiegare il problema è come segue Come posso mostrare quelle immagini che vengono aggiunte per formare dinamicamente. Io posso aggiungere un input nascosto archiviato che ha attributi image id, value etc per formare usando i metodi di aggiunta di jquery. – user2663526

+0

non lo spieghi nella tua domanda. – Jaimin

Problemi correlati