0

我在同一页面上有两个相同类型的项目集合,它们当前使用相同的 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.

<divs>在页面上有两个,为了论证起见,称它们为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
    }
}

还是有更好的简洁方法来做到这一点?

4

1 回答 1

0

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

编辑:

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

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

于 2013-08-18T19:32:23.647 回答