1

この記事で説明されているオプションを実装してみました。

    public class HttpParamActionAttribute : ActionNameSelectorAttribute
{
    public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
    {
        if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
            return true;

        if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
            return false;

        var request = controllerContext.RequestContext.HttpContext.Request;
        return request[methodInfo.Name] != null;
    }
}

私のコントローラーアクション:

[HttpParamAction]
[HttpPost]
public virtual ActionResult EditAccouncement(_AccouncementPostViewModel m)

[HttpParamAction]
[HttpPost]
public virtual PartialViewResult DeleteAnnouncement(int id)

私のフォーム:

@using (Ajax.BeginForm("Action", ajaxOptions: new AjaxOptions()
    {
        HttpMethod = "POST",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "announcement" + @Model.id
    }))
{
            //form values omitted
            <button type="submit" class="submitbutton" name="edit">Change details</button>
            <button type="submit" class="submitbutton" name="delete">Delete</button>
}

ただし、呼び出されるコントローラー アクションは、まだ Action メソッドです (存在しません)。何か不足していますか?

4

1 に答える 1