相关疑难解决方法(0)

维护ASP.NET MVC中动态的复选框列表的状态

我有一个名为"PropertyFeature"的类,它只包含PropertyFeatureID和Description.它是通过映射到SQL Server数据库表的LINQ to SQL创建的正确模型.示例实例/行将是:

PropertyFeatureID: 2
Description: "Swimming Pool"
Run Code Online (Sandbox Code Playgroud)

行数(PropertyFeatures)当然可以增长和缩小,因此我想动态呈现一个复选框列表,以便用户可以选择其中任何一个.我可以很容易地动态渲染Checkbox,例如:

<%foreach (var Feature in (ViewData["Features"] as IEnumerable<MySolution.Models.PropertyFeature>)) { %>
<%=Html.CheckBox("Features", new { @id = Feature.PropertyFeatureID, @value = Feature.PropertyFeatureID })%><label for="Feature<%=Feature.PropertyFeatureID%>"><%=Feature.Description%></label>
<%}%>
Run Code Online (Sandbox Code Playgroud)

我为每个复选框指定ID并呈现匹配的标签,以便用户可以直观地单击标签并切换复选框 - 这很有效.

我将CheckBox的"名称"设置为"Features",因此所有复选框都以相同的名称呈现,并且MVC Model Binder在发布表单时将它们堆叠到一个名为"Features"的集合中.这很好用.

提交表单后,我使用选中的值并存储它们,因此我需要实际的整数值,因此我知道选择了哪个PropertyFeature,而不仅仅是一堆布尔值和字段名称.理想情况下,我希望它可以作为一个易于使用的数组或集合.

单击按钮时,我可以从Controller方法中检索所选值,因为我已将参数指定为int [] Features.

但问题是它没有维持状态.也就是说,当我单击提交按钮并重新加载页面(再次显示该表单)时,我希望所有动态复选框保持其已检查状态(或不保持).所有这一切我已经创造了其他领域Html.DropDownList,并Html.TextBox都保持自己的状态没有任何成功都在同一页上以相同的形式问题.

我花了几个小时阅读关于类似问题的所有其他线程和文章,并且有很多关于使用ICollectionIDictionary捆绑的内容,并为每个项目包含一个布尔值,以便它可以保持复选框状态.但我并没有100%掌握如何在我个人的例子中使用它.我想保持解决方案非常简单,不必为了保持我的复选框状态而编写新类的页面.

这样做最干净,最恰当的方法是什么?

checkbox asp.net-mvc binding state viewmodel

10
推荐指数
1
解决办法
1万
查看次数

在MVC 6中,如何在视图中编码复选框列表并将选中的值传递给控制器​​?

抱歉,我的大多数搜索都会将我带到旧的MVC代码.任何帮助将不胜感激.

在带有标记帮助器的MVC 6中,如何编写一组复选框:

  • 使用标签帮助器作为标签,因此单击它将切换选中的值
  • 将选中的值保存(绑定?)到IsOptionSelected属性
  • 单击"提交"后,将这些选中的值传递回Controller

我能够正确显示带有标签的复选框,但我不知道如何通过模型将选中的值传递回控制器.现在,IsOptionSelected值返回false.

我还能够为标签工作制作html帮助器,但不能为标签帮助器制作.我可能也编码这些都错了所以任何提示都会有所帮助!

这是我到目前为止所拥有的:

显示:

电话选项复选框

实体:

public class PhoneOption
{
    public bool IsOptionSelected { get; set; } = false;
    public int OptionId { get; set; }
    public string OptionName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

模型:

[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }

. . . .
PhoneOptions = repository.GetPhoneOptions();
Run Code Online (Sandbox Code Playgroud)

库:

public IEnumerable<PhoneOption> GetPhoneOptions()
{
    IEnumerable<PhoneOption> options = new[]
    {
        new PhoneOption { OptionId = 1, OptionName = "Phone Case",       IsOptionSelected …
Run Code Online (Sandbox Code Playgroud)

c# checkbox asp.net-core-mvc tag-helpers

9
推荐指数
1
解决办法
9846
查看次数

从FormCollection中获取所有选中的复选框

我有一个表单,其中包含一大堆复选框和一些其他类型的控件.我需要检索每个选中复选框的名称.

做这个的最好方式是什么?我可以使用linq查询吗?

所以在伪代码中,我希望做这样的事情:

var names = formCollection
               .Where(c => c is Checkbox && c.Checked)
               .Select(c => c.Name);
Run Code Online (Sandbox Code Playgroud)

更新似乎MVC提交复选框的方式与普通表单的行为方式不同,因为隐藏字段也会呈现.我在这里找到了详细信息:如何处理ASP.NET MVC表单中的复选框?

Anywho,我已经得到了该线程的帮助以及下面BuildStarted的答案.以下代码完成了这一操作.

var additionalItems = form.AllKeys
       .Where(k => form[k].Contains("true") && k.StartsWith("addItem"))
               .Select(k => k.Substring(7));
Run Code Online (Sandbox Code Playgroud)

checkbox asp.net-mvc controls webforms formcollection

6
推荐指数
1
解决办法
1万
查看次数

ASP.Net MVC - 处理多个复选框

好的,我有一个基于角色的权限系统,并希望管理员能够编辑每个角色的权限.要做到这一点,我需要加载大量的复选框,但是我很难从View中获取返回数据

请注意:我环顾四周,我发现了类似的问题,但截至目前尚无法找到解决方案.

 <%
     Html.BeginForm();

    string lastGroup = "";
    foreach (var CurPermission in Model)
    {

%>
        <%=Html.CheckBox("Permissions", CurPermission.Checked, new { ID = CurPermission.PermissionId}) + " " + CurPermission.PermissionValue%> 

        <br />
<%
    } 
    %>
        <input type="submit" value="Submit" />
    <%
    Html.EndForm();
%>
Run Code Online (Sandbox Code Playgroud)

和控制器,

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult EditPermissions(String[] Permissions)
        {
            foreach (var CurPermission in Permissions)
            {
                Debug.WriteLine(CurPermission);
            }

            return View();
        }
Run Code Online (Sandbox Code Playgroud)

显然,我需要知道哪些盒子没有被检查,以及那些盒子.但是在返回值中因为整体("真,假"),我无法找出哪个值与哪个复选框相关.

任何关于修复或预选的替代方法的建议都会受到关注.

checkbox asp.net-mvc asp.net-mvc-2

5
推荐指数
1
解决办法
1万
查看次数

如何在ASP.NET MVC中维护Html.CheckBox()的状态

我的MVC应用程序中有两个复选框,它们都是布尔/位字段."NotifyEmail"和"NotifySMS".

每当我回发到服务器并发生错误时,虽然我设置了尝试的值,但是复选框的状态已经消失.

asp.net-mvc

4
推荐指数
1
解决办法
1万
查看次数

在ASP.NET MVC中设置CheckBox的Checked属性

我正在努力解决ASP.NET MVC中缺少CheckBoxList的问题.我已经达到了可以渲染Enum值列表的程度,但我仍然坚持如何根据我的模型设置checked属性 - 在这种情况下,是一个具有IList of Role实体的User实体.角色id对应于枚举值.

此示例使用Spark View Engine语法,但它在功能上与标准ASP.NET MVC视图引擎相同("$("与"<%="或"<%"相同)

<for each="var r in Enum.GetValues(typeof(UserRole))">
    <label><input type="checkbox" name="Roles" value="${(int)r}" checked="[How-The-Heck-To-I-Get-This?]" />${r}</label>
</for>
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc spark-view-engine

4
推荐指数
1
解决办法
9304
查看次数

该字符串未标识为有效的布尔字符串

我有一个页面,其中列出了名为TimeRange1,TimeRange2 .... TimeRange7的复选框,我在for循环中生成它们,如下所示:

<% for (int currentDay = 1; currentDay <= 7; currentDay++)
......<%= Html.CheckBox("TimeRange" + currentDay.ToString(), false)%>
Run Code Online (Sandbox Code Playgroud)

工作正常,直到我发布表单,然后我得到"字符串未被识别为有效的布尔字符串."

显然问题是我连接了复选框的名称.

有一些巧妙的方法来解决这个问题吗?我需要让他们命名为1-7.这就像一个大的时间表,您可以选择哪些时间可用.

asp.net-mvc

4
推荐指数
1
解决办法
2491
查看次数

将复选框的值从View传递给Controller

我有一个包含许多复选框的视图.我希望能够将复选框的值传递给控制器​​,然后输出已经勾选的OfficeNames列表.我不知道如何将多个复选框的值传递回控制器,或者如何根据已勾选的框输出OfficeNames

视图:

<p>
@using (Html.BeginForm())
{
<p>
    Start Date: @Html.TextBox("StartDate") <br />
    <br />
    End Date: @Html.TextBox("EndDate") <br />
    <br />
    <input type="submit" value="Filter" />
</p>
}

<p>
@foreach (var item in Model.BettingOffices)
{
    <label>@Html.DisplayFor(modelItem => item.OfficeName)</label>
    <input type="checkbox" name="selectedShops" value="@item.OfficeName">
}

</p>
Run Code Online (Sandbox Code Playgroud)

控制器:

public class DailyReportController : Controller
{
    private RiskEntities _db = new RiskEntities();

    // GET: /DailyReport/
    public ActionResult Index(DateTime? startDate, DateTime? endDate)
    {

        if (startDate == null || endDate == null)
        {
            var dailyReportModelBlank = new DailyReportModel(); …
Run Code Online (Sandbox Code Playgroud)

checkbox asp.net-mvc

4
推荐指数
1
解决办法
3万
查看次数

如何在ASP.NET MVC中向控制器正确提交复选框值

我工作的ASP.NET MVC的Web应用程序,我需要提交List<ProdColor>Controllercheckbox秒.这是我的代码

模型

public partial class ProdColor
{
    public int ProdColor_ID { get; set; }
    public Nullable<int> P_ID { get; set; }
    public Nullable<int> Color_ID { get; set; }

    public virtual ProdctModelView ProdctModelView { get; set; }
}

public class ProdctModelView
{
    public ProdctModelView()
    {
        this.ProductColors = new HashSet<ProdColor>();
    }

    public int P_ID { get; set; }
    public string P_name { get; set; }

    public virtual ICollection<ProdColor> ProductColors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

调节器 …

c# checkbox asp.net-mvc razor asp.net-mvc-4

2
推荐指数
1
解决办法
1万
查看次数