2013-08-08 12 views
10

Muszę przekazać ukryte wartości do akcji kontrolera. Tak próbowałem w następujący sposób, ale otrzymuję wartości null.Jak korzystać z ukrytych wartości pól z widoku do kontrolera w asp.net mvc 3

Próbowałem obu metod tj FormCollection i ViewModel koncepcję

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); 
} 

Zobacz

@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 Nie biorę wartości z bazy danych, więc nie miałem klasy modelu. Mam tylko model widoku. Moje główne obawy to jak wpisywać wartości pola wejściowego np. 7 w moim np. Czy jest to możliwe? – user2663526

Odpowiedz

8

Wydaje mi się jak starają się wiele wartości do sterownika POST. W takim przypadku i przy egzaminie wystarczająca jest wartość z ukrytego wejścia. W takim przypadku można skonfigurować kontroler jak tak:

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()); 
} 

a co do widoku, prosty ją zmienić, aby wiązać się z tą samą nazwą „hiddens” jak tak:

@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" /> 
} 

Nadzieja to służy temu, na co czekasz.

9

Spróbuj tego, zdaniem Razor:

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

jak uzyskać wartości hiddenvalue .AS nie biorę tych wartości z bazy danych. – user2663526

+0

po przesłaniu formularza, MVC ModelBinders automatycznie pobierze wartość z "@ Html.HiddenFor" i wyśle ​​ją do metody akcji. Więc rzuci wartość w "@ Html.HiddenFor" na ukryty typ obiektu. Dzieje się tak, ponieważ silnie wpisujesz widok w viewmodel. – tranceporter

3

jeśli ukryta wartość static.Than spróbować tej

Zobacz

@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"/> 
} 

kontroler

[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

Twój pomysł jest w porządku, ale mój problem jest trochę inny – user2663526

+0

twój pomysł jest w porządku, ale mój problem jest trochę inny Pozwól mi wyjaśnić, że problem jest następujący Jak mogę pokazać te obrazy, które są dołączane do dynamicznego tworzenia. tj. mogę dołączyć ukryte dane wejściowe, które mają atrybuty id obrazu, wartość itp., aby utworzyć za pomocą metod jingle append. – user2663526

+0

nie wyjaśnisz tego w swoim pytaniu. – Jaimin

Powiązane problemy