我在App_Code
中创建了一个名为ControlHelper
的网格助手,它运行得很好。我使用输入呈现表单和表格,并有按钮将所有信息提交回我选择的方法。
我可以说每次处理从这个网格提交的控制器代码都是一样的,所以我在我的帮助器上添加了一个名为Submit()
的方法来重用该代码。
我可以使用
成功调用helper方法从我的视图中呈现网格@ControlHelper.Grid(Html, Model, "About", "Home")
但是当我尝试从我的控制器代码中调用ControlHelper.Submit()
时,它表示我的助手未定义。
名称' ControlHelper'在当前上下文中不存在
这是帮助者代码的相关部分:
@using System.Web.Mvc;
@using System.Web.Mvc.Html;
@using male.services.biz
@functions
{
public static HelperResult Grid<TModel, T>(HtmlHelper<TModel> html,
EFCollection<T> collection,
string action,
string controller,
FormMethod method = FormMethod.Post,
string formName = null) where T : EFObject<T>
{
formName = formName ?? "frm" + typeof(T).Name + "s";
return RenderGrid(html, typeof(T), collection, action, controller, method, formName);
}
public static void Submit<T>(EFCollection<T> collection, string save, string add, string delete) where T : EFObject<T>
{
if (add == null)
collection.Remove(collection.Last());
if (delete != null)
{
var itemToDelete = collection[int.Parse(delete)];
collection.Remove(itemToDelete);
itemToDelete.Delete();
}
if (add != null || delete != null || save != null)
collection.Save();
}
}
我的控制器代码目前是:
[HttpPost]
public ActionResult About(EFCollection<Member> members, string save, string add, string delete)
{
if (add == null)
members.Remove(members.Last());
if (delete != null)
{
var memberToDelete = members[int.Parse(delete)];
members.Remove(memberToDelete);
memberToDelete.Delete();
}
if (add != null || delete != null || save != null)
members.Save();
return View(members);
}
但是看看我是否可以让它工作,它将简化为:
[HttpPost]
public ActionResult About(EFCollection<Member> members, string save, string add, string delete)
{
ControlHelper.Submit(members, save, add, delete);
return View(members);
}
答案 0 :(得分:0)
答案是,我不再这样做了。我对某些类型和类使用共享编辑/显示视图来实现我想要的。