【问题标题】:HTML Form Template Different Commands On The Same ButtonHTML表单模板在同一个按钮上的不同命令
【发布时间】:2013-08-18 16:22:43
【问题描述】:

我在同一页面上有两个相同类型的项目集合,它们当前使用相同的 Moustach HTML 模板进行呈现。该模板包含一个Remove 按钮。

问题是Remove 在每个上下文中都需要执行不同的操作(主要基于它当前所在的 div)。

我不愿意使用两个模板是因为我试图坚持 DataContract 对象和模板之间的一对一关系,以便项目始终在 UI 中一致地显示。

表单将通过 ajax 提交。

处理这个问题的最佳选择是什么?

创建另一个模板(真的想避免这样做)? 为每个按钮添加一个类名?

编辑:

鉴于这个类:

public class MyDataContract()
{
    public int Id { get; set; }
    public string MyString { get; set; }
}

Using this template:

<form id={{Id}} action="/dragsource/action/">
    <p>{{MyString}}</p>
    <input type="button" name='command' value='Remove' />
    <input type="button" name='command' value='Save' />
</form>

我加载了两个不同的 MyDataContract 列表。

我在页面上有两个&lt;divs&gt;,为了争论,称它们为dragsourcedroptarget

表单中的按钮需要根据其所在的 div 执行两种不同的操作。

如果模板中的默认操作类似于:

action='/dragsource/action/'

我在想我可以将放置处理程序中的放置表单操作更改为:

drop: function(event, ui) {
    $(ui.draggable).parent().attr('action', '/controllername/droptarget/')
    $(ui.draggable).appendTo(this);
}

然后我的 MVC 操作方法可能看起来像:

public ActionResult Droptarget(MyDataContract myDataContract, string command)
{
    if(command = "Remove")
    {
        // Do stuff
    }
    else
    {
        // Do stuff
    }
}

或者有更好的简洁方法吗?

【问题讨论】:

    标签: html ajax asp.net-mvc forms button


    【解决方案1】:

    您可以将父项中的操作绑定到每个上下文...您能解释一下您的问题吗?或添加代码示例?

    编辑:

    我认为您可以在控制器中创建另一个 Action,一个用于 DroptargetRemove,一个用于 DroptargetSave 以通过 ajax 调用操作。

    如果您使用表单提交,您可以更改表单的操作或创建 2 个表单。

    【讨论】:

    • 对不起,我应该首先添加代码。根据您的评论,我想我可能已经制定了一个行动计划(“原谅双关语”)。如果您能想到更好的方法,我将不胜感激您的观点。谢谢。
    猜你喜欢
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2012-11-02
    • 2014-10-09
    相关资源
    最近更新 更多