动态渲染视图上的表单数据和刷新

本文关键字:表单 数据 刷新 视图 动态 | 更新日期: 2023-09-27 18:02:38

一直致力于创建一个接口,以允许模块化的方法来UI,背景:

允许用户将模块拖放到div上jQUery将模块和面板的名称发送回控制器控制器返回一个JsonResult,其中包含特定于该模块的已呈现视图

这是一个UI的图片,这样你就可以看到我在做什么了:

形象

现在,我要做的是,在JsonResult(其中包含视图渲染的字符串输出),是保存一些数据回模型,并刷新动态渲染的视图,所以只是面板(视图已被渲染)更新。

我知道

听起来很复杂,所以这里有一些代码:

 [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult AddModule(string id, string returnTo)
    {
        string content = RenderView(id);
        return Json(new { Target = returnTo, Content = content });
    }
    private string RenderView(string moduleName)
    {
        string result = "";
        ContentModule module = (ContentModule)Activator.CreateInstance(Type.GetType("TrustMRM.BLL.ContentModules." + moduleName + ",TrustMRM.BLL"));
        module.TrustID = Settings.Default.TrustID;
        module.DataBind();
        this.ViewData.Model = module;
        using (var sw = new System.IO.StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, moduleName);
            var viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
            viewResult.View.Render(viewContext, sw);
            result = sw.GetStringBuilder().ToString();
        }
        return result;
    }

上面是处理模块'drop'的代码。我有一个抽象类,ContentModule,和一个名为BLLForumModule的实现,有一个匹配的视图,BLLForumModule。cshtml,它被构建,并在那个字符串中返回,强绑定到BLLForumModule。

呈现的是一个下拉列表,等于一些配置特定模块的数据:

@model TrustMRM.BLL.ContentModules.BLLForumModule
@{
Layout = null;
}
@if (Model.IsConfigured)
{ 
    <span>I am configured</span>
}
else
{
using (Html.BeginForm("RefreshModule", "Home"))
{
    <h3 class="panelHeader">@Html.DisplayTextFor(m => m.Title)</h3>
    <span>Select group</span>
    @Html.DropDownListFor(m => m.SelectedGroupID, Model.GroupSelection.Select(t => new SelectListItem { Text = t.GroupName, Value = t.GroupID.Value.ToString() }));
    @Html.HiddenFor(x => x.ModuleID);                                                                                                                     
    <input type="submit" value="Ok" />                                                                                                                                                           
    }
}

现在,我不确定要返回什么,或者如何处理这个帖子,以刷新视图,一个被渲染为字符串并发送回来,任何洞察这一点,如果有人做过类似的事情之前,也许我渲染视图字符串是错误的方法?

接受表单post的代码:

public ActionResult RefreshModule(string ModuleID)
    {
        return View();
    }

(没用)

动态渲染视图上的表单数据和刷新

这样做会对你有所帮助使用Ajax。BeginForm与ASP。. NET MVC 3 Razor

使用Ajax。BeginForm并提供一个被替换元素的id。

在ajax请求后附加验证Ajax调用后MVC3不显眼的验证不起作用