|
|
$('#webgridid').serialize()<input type="text" runat="server" id="webgridValues" />"
String.Split( new char {';'})|
|
// ViewData-Objekt
public class ViewData
{
public IEnumerable<User> User {get;set;}
public IEnumerable<Option> Optionen {get;set;}
}
// User-Objekt
// Daten werden aus Datenbank geholt
public class User
{
[Key]
public int UserID {get;set;}
public string Nachname {get;set;}
public string Nachname {get;set;}
}
// Option-Objekt
// Daten werden ebenfalls aus der Datenbank geholt (Stammdaten)
public class Optionen
{
[Key]
public int OptionID{ get; set; }
public string Bezeichnung { get; set; }
}
// Im Controller
public ActionResult Index()
{
// Hier wird das _viewModel-Objekt gefüllt
CreateViewModel();
return View(_viewModel);
}
// View
@model Beispiel.ViewModels.ViewData
@{
var gridUser = new WebGrid(Model.User);
}
// Erstellung JavaScripte und der View
// Erstellung des WebGrids
@gridUser.GetHtml(
columns: gridUser.Columns(
gridUser.Column("Nachname", "Nachname"),
gridUser.Column("Vorname", "Vorname"),
// Hier hätte ich nun gerne die RadioButtons mit den Optionen aus Model.Optionen
// Ich stelle mir das in etwa so vor (wobei das Beispiel auch schon fehlerhaft ist,
// wegen dem Object, welches ich übergebe (id = "1"):
gridUser.Column(format: (item) => Html.RadioButtonFor(result => result.Optionen, new {id = "1"}))
)
)
|
|
document.getElementsByName("name") // gibt ein array zurückRequest.Parmas["name"]
|
|
|
|
// View
@model Beispiel.ViewModels.ViewData
@{
var gridUser = new WebGrid(Model.User);
var radioButtonIndex = 0;
}
// siehe vorherigen Codeschnipsel -> wichtig sind folgende Zeilen!
gridUser.Column(format: item =>
{
// Aktuelle Option wird aus vorheriger Selektion bestimmt
// und in einer Session zwischengespeichert -> Grund: Vorselektion der Option
string actualOption = (string)this.Session["ActualOption"];
string radioButtonName = string.Format("Option{0}",radioButtonIndex.ToString());
// Ist jetzt noch nicht komplett fertig (Beta-Phase) -> Vorselektion vorhanden?
if(!string.IsNullOrEmpty(actualOption))
{
if(actualOption== "Option1")
{
// mit Vorselektion
string option1 = string.Format(@"<input type=""radio"" name={0} checked=""checked""/>", radioButtonName);
}
}
else
{
// ohne Vorselektion
string option1 = string.Format(@"<input type=""radio"" name={0}/>", radioButtonName);
}
string option2 = string.Format(@"<input type=""radio"" name={0} />", radioButtonName);
string option3 = string.Format(@"<input type=""radio"" name={0} />", radioButtonName);
string option4 = string.Format(@"<input type=""radio"" name={0} />", radioButtonName);
radioButtonIndex++;
return new HtmlString(string.Format("{0}{1}{2}{3}", option1 , option2 , option3 , option4));
}),
|
|
this.Request["Option0"]; // liefert "on" zurück
Request.Params["Option0"]; // liefert ebenfalls "on" zurück
|
|
var requestParams = new NameValueCollection();
requestParams.Add("Option0", "value0");
requestParams.Add("Option1", "value1");
requestParams.Add("Option2", "value2");
requestParams.Add("IrgendEtwasAnderes", "EinValue");
List<string> valueList = new List<string>();
foreach (var key in requestParams.AllKeys)
{
if (key.StartsWith("Option"))
{
valueList.Add(requestParams[key]);
}
}
|
|
// Value erstmal hardcoded, wäre aber OptionID; name ist Option0
string option1 = string.Format(@"<input type=""radio"" name={0} value=""1"" />", radioButtonName);
this.Request["Option0"] // Liefert 1, wegen Value
|
|