if (Model !=" /> if (Model !=" /> if (Model !="/>

ASP.NET MVC C# : HiddenFor to controller

51 Views Asked by At

I have the following markup and code.

View:

@model WealthRef.Models.ViewModels

<td style="width: 100px;color:black" id="tdfromDatevalue">
if (Model != null)
{
    @Html.DropDownListFor(model => Model.DropDownModels.FromDateModels.SelectedNode,
        new SelectList(Model.DropDownModels.FromDateModels.FromDateValues, 
                       "Code", "CodeDescription"),
        new { id = "ddlFromDateValues", 
              @class = "chosen-select",
              data_placeholder = "Select Date...", 
              style = "white-space:nowrap;width:100px;" })
    @Html.HiddenFor(model => Model.FromDate, new { id = "hdnFromDate" })
}
</td>

<script type="text/javascript" language="javascript">
$("#ddlFromDateValues").on("change", function () {
    var fromDate = $(this).val();
    $("#ddlFromDateValues").val(fromDate).trigger("chosen:updated");
    $("#hdnFromDate").val(fromDate);
});
</script>
<td>
    <a class="btn" href="@Url.Action("ExportToExcel", "WealthRef")" id="btnRun"
       style="color:White" onclick="return Validate();">Run</a>
</td>
<script>
$(document).ready(function () {
    load();
});

function load() {
    $("#hdnFromDate").val($("#ddlFromDateValues").find("option:selected").val());
}
</script>

Model:

namespace WealthRef.Models
{
    public class ViewModels
    {
        public string FromDate { get; set; }
    }
}

Controller:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ExportToExcel(ViewModels model)
{
    string FromDate = model.FromDate;
}

I expected to get the FromDate from the hidden field, which is from the selected item from the @Html.DropDownListFor, but I got null.

Please help!

Thanks!

1

There are 1 best solutions below

1
Warren Mok On

The following code works.

View:

<td style="width:80px; color:black; padding-right: 20px; " id="tdfromDatevalue">
    @if (Model != null)
    {
        @Html.DropDownListFor(model => Model.DropDownModels.FromDateModels.SelectedNode, new SelectList(Model.DropDownModels.FromDateModels.FromDateValues, "Code", "CodeDescription"), new { id = "ddlFromDateValues", @class = "chosen-select", data_placeholder = "Select Date...", style = "white-space:nowrap;width:100px;" })
    }
</td>
<td>
    <form action="@Url.Action("ExportToExcel", "WealthRef")" method="post">
        @Html.HiddenFor(model => Model.GenericModels.fromDate, new { id = "hdnFromDate" })
        <input type="submit" value="Run" class="btn" style="color:White; font-size:13px; padding:6px 24px;" onclick="return Validate();" />
    </form>
</td>

<script>
$(document).ready(function () {
    var fromDate = $("#ddlFromDateValues").val();
    $("#hdnFromDate").val(fromDate);
    $("#ddlFromDateValues").val(fromDate).trigger("chosen:updated");
});
</script>

Model:

namespace WealthRef.Models
{
    public class ViewModels
    {
        public GenericModel GenericModels { get; set; }
    }
    public class GenericModel
    {
        public string fromDate { get; set; }
    }
}

Controller:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ExportToExcel(ViewModels model)
{
    string FromDate = model.GenericModels.fromDate;
}