如何将隐藏的ID值传递给ASP.NET MVC 3中的控制器



我必须将隐藏的ID值传递给控制器。因此,我已经尝试了以下方式,但是我得到了价值。

cs.html:

<ul id="tree" class="dd-list">
    @for (int i = 0; i < Model.DomainViews.Count(); i++)
    {
        <li class="dd-item">
            <a href="#">
                @Html.CheckBoxFor(model => model.DomainViews[i].IsChecked, new { @id = @Model.DomainViews[i].DomainID })
                <label for="@Model.DomainViews[i].DomainID">@Model.DomainViews[i].DomainName</label>
                @Html.HiddenFor(model => Model.DomainViews[i].DomainID, new { id = "hdnDomainID" })
            </a>
            <ul class="dd-list">
                <li class="dd-item">
                    <a href="#">
                        <input type="checkbox" id="2">
                        <label for="2"> Level 2 - 1</label>
                    </a>
                    <ul class="dd-list">
                        <li class="dd-item">
                            <a href="#">
                                <input type="checkbox" id="3">
                                <label for="3"> Level 3 - 1</label>
                            </a>
                        </li>
                        <li class="dd-item">
                            <a href="#">
                                <input type="checkbox" id="4">
                                <label for="4"> Level 3 - 2</label>
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    }
</ul>

如何将@Html.HiddenFor(model => Model.DomainViews[i].DomainID, new { id = "hdnDomainID" })值传递给控制器:

public ActionResult RoleCreate()
{
    userType type = new userType();
    List<DomainView> EmpList = type.GetAllRoleModulesViews();
    Role objBind = new Role();
    objBind.DomainViews = EmpList;
    return View(objBind);
}

在上面的代码中,我如何获得域名值..

public List<DomainView> GetAllRoleModulesViews()
{
    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Admin"].ConnectionString))
    {
        List<DomainView> EmpList = new List<DomainView>();
        SqlCommand com = new SqlCommand("MEDEIL_DomainMaster_SelectAll", conn);
        com.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        conn.Open();
        da.Fill(dt);
        conn.Close();
        foreach (DataRow dr in dt.Rows)
        {
            EmpList.Add(new DomainView
            {
                DomainID = Convert.ToInt32(dr["DomainID"]),
                DomainCode = Convert.ToString(dr["DomainCode"]),
                DomainName = Convert.ToString(dr["DomainName"]),
                CreatedBy = Convert.ToInt32(dr["CreatedBy"] == DBNull.Value ? null : dr["CreatedBy"].ToString()),
                CreatedDate = Convert.ToDateTime(dr["CreatedDate"]),
                ModifiedBy = Convert.ToInt32(dr["ModifiedBy"] == DBNull.Value ? null : dr["ModifiedBy"].ToString()),
                ModifiedDate = Convert.ToDateTime(dr["ModifiedDate"] == DBNull.Value ? null : dr["ModifiedDate"].ToString())
            });
        }
        return EmpList;
    }
}

模块:

public class DomainView
{
    [Key]
    public int DomainID { get; set; }
    public string DomainCode { get; set; }
    public string DomainName { get; set; }
    public int TabOrder { get; set; }
    public string UserName { get; set; }
    public int CreatedBy { get; set; }
    public DateTime CreatedDate = DateTime.UtcNow;
    public int ModifiedBy { get; set; }
    public DateTime ModifiedDate = DateTime.UtcNow;
    public bool IsChecked { get; set; }
    public IEnumerable<DomainView> DomainViews { get; set; }
}

我最简单的方法是使用称为编辑器模板的MVC功能。您需要在正确的视图文件夹(或共享文件夹)中创建子目录EditorTemplates,然后在那里创建DomainView.cshtml。该文件将包含标记与for -Loop的主体非常相似,但是在任何地方都删除了DomainViews[i],因为模板仅适用于单个项目:

@model DomainView // <-- you'll need your Namespace here of course
<li class="dd-item">
    <a href="#">
    @Html.CheckBoxFor(model => model.IsChecked, new { @id = @Model.DomainID })
    <label for="@Model.DomainID">@Model.DomainName</label>
    @Html.HiddenFor(model => Model.DomainID, new { id = "hdnDomainID" })
    </a>
    ......
</li>

在您的主页中,放置了元素<ul id="tree" class="dd-list">的位置,您的代码将是:

<ul id="tree" class="dd-list">
    @Html.EditorFor(model => model.DomainViews)
</ul>

MVC编辑器模板引擎将为您的您和张贴时生成正确的名称,模型活页夹将确保阵列正确填充。

最新更新