tag route page net for data asp all asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 radio-button postback

asp.net-mvc - route - tag helpers asp net core



Establecer elemento de botón de selección marcado del controlador ASP MVC 3 (3)

Debajo hay un grupo de botones de radio que aparecen en mi vista. Puedo recuperar el elemento seleccionado a través de este código simple

string criteria = filter["criteria"];

sin embargo, no sé cómo retener el elemento seleccionado. Una vez que el controlador publique nuevamente en la vista, el botón de opción predeterminado siempre estará seleccionado.

<form method="post"> @Html.TextBox("searchValue", ViewBag.CurrentFilter as string, new { placeholder = "Search" }) <input type="image" src="@Url.Content("~/Content/Images/Filter.bmp")" alt="Filter" style="padding-top: 0px;" /> <span class="error" style="clear: both;"> @ViewBag.ErrorMessage </span> <a href="#" style="padding-left: 30px;"></a> <br /> <br /> <input type="radio" name="criteria" id="bankName" value="bankName" checked="true"/> <label for="bankName">Bank Name</label> <input type="radio" name="criteria" id="EPURL" value="EPURL" /> <label for="EPURL">EPURL</label> <input type="radio" name="criteria" id="specialNotes" value="specialNotes" /> <label for="SpecialNotes">Special Notes</label> <input type="radio" name="criteria" id="email" value="email" /> <label for="email">Email</label> <input type="radio" name="criteria" id="dynamicsId" value="dynamicsId" /> <label for="dynamicsId">Dynamics ID</label> <input type="radio" name="criteria" id="stat" value="stat" /> <label for="fixed">Agent ID &nbsp;</label> </form>


Si entiendo su necesidad correctamente, puede establecer el nombre del artículo que desea verificar en el ViewBag (o ViewData o Model) y establecer la propiedad marcada en su vista en consecuencia. Algo como esto:

<form method="post"> @Html.TextBox("searchValue", ViewBag.CurrentFilter as string, new { placeholder = "Search" }) <input type="image" src="@Url.Content("~/Content/Images/Filter.bmp")" alt="Filter" style="padding-top: 0px;" /> <span class="error" style="clear: both;"> @ViewBag.ErrorMessage </span> <a href="#" style="padding-left: 30px;"></a> <br /> <br /> @{ var checkedItemName = ViewBag.CheckedItemName; } <input type="radio" name="criteria" id="bankName" value="bankName" checked="@((checkedItemName == "bankName"))"/> <label for="bankName">Bank Name</label> <input type="radio" name="criteria" id="EPURL" value="EPURL" checked="@((checkedItemName == "EPURL"))"/> <label for="EPURL">EPURL</label> <input type="radio" name="criteria" id="specialNotes" value="specialNotes" checked="@((checkedItemName == "specialNotes"))"/> <label for="SpecialNotes">Special Notes</label> <input type="radio" name="criteria" id="email" value="email" checked="@((checkedItemName == "email"))"/> <label for="email">Email</label> <input type="radio" name="criteria" id="dynamicsId" value="dynamicsId" checked="@((checkedItemName == "dynamicsId"))"/> <label for="dynamicsId">Dynamics ID</label> <input type="radio" name="criteria" id="stat" value="stat" checked="@((checkedItemName == "stat"))"/> <label for="fixed">Agent ID &nbsp;</label> </form>


La respuesta a esta pregunta terminó siendo increíblemente simple. El primer error que cometí fue no usar los controles @Html . El segundo fue usar FormCollection como un parámetro de entrada para el controlador de índice. Al cambiar los botones de radio a lo siguiente:

@Html.RadioButton("criteria", "bankName", true)<span>Bank Name</span> @Html.RadioButton("criteria", "EPURL")<span>EPURL</span> @Html.RadioButton("criteria", "specialNotes")<span>Special Notes</span> @Html.RadioButton("criteria", "email")<span>Email</span> @Html.RadioButton("criteria", "dynamicsId")<span>Dynamics ID</span> @Html.RadioButton("criteria", "stat")<span>Agent ID</span>

y la firma del método Index en el controlador para esto:

public ActionResult Index(string criteria, string searchValue)

El botón de selección seleccionado permaneció seleccionado después de la publicación posterior.


No actualice la página completa ... Use JQuery y haga una llamada Ajax

$.ajax({ url: "Your Url", async: true, type: ''POST'', data: JSON.stringify({ ParameterName: Param_Value }), beforeSend: function (xhr, opts) { }, contentType: ''application/json; charset=utf-8'', complete: function () { }, success: function (data) { //Success Callback //Code to set value to your control } });