目标:在MVC应用程序中有一个部分视图,该视图发布并返回部分呈现的任何视图。在这种情况下,View是Index.html,PartialView是_ConfigurationSetup.cshtml
现在的视图只是调用渲染部分的动作(我附加了一个模型):
@{ Html.RenderAction("LoadSiteConfigurationForm", "SiteConfiguration"); }
我使用渲染操作,因此我可以将模型传递给部分视图:
public ActionResult LoadSiteConfigurationForm()
{
SiteConfigurationModel model = new SiteConfigurationModel();
model = _configRepository.GetConfiguration();
return PartialView("_ConfigurationSetup", model);
}
在局部视图中,我有一个TinyMCE TextBox,我想做的就是将一个字符串传递给控制器,将其填入数据库,然后返回而不会丢失主视图(Index.cshtml)。我已经使用Ajax完成了这项任务,我似乎无法弄清楚我做错了什么。
Ajax表单(它包含在Bootstrap选项卡中,如果相关的话):
<div id="SetWelcomeMessage" class="tab-pane fade active in">
@using (Ajax.BeginForm("SetWelcomeMessage", "SiteConfiguration", new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "success",
HttpMethod = "POST",
}))
{
@Html.LabelFor(m => m.WelcomeMessage)
@Html.EditorFor(m => m.WelcomeMessage)
<input type="submit" value="Submit" class="btn btn-default btn-sm margin-top-10" />
}
</div>
最后 - 控制器:
[HttpPost]
[ValidateInput(false)]
public ActionResult SetWelcomeMessage(string welcomeMessage)
{
_configRepository.SetWelcomeMessage(welcomeMessage);
return Content("Welcome message has been set!");
}
我确定我正在向控制器进行操作,因为数据库正在更新。
当我返回内容时,我只是在屏幕上看到消息,没有别的。我最初让它返回局部视图,但仅返回了局部视图,所以我丢失了其他所有内容。
我开始工作的一件事是从部分传递索引视图,但这感觉不对,因为它们不在项目的同一位置。这会有效,只是感觉马虎,我想避免它。
一双新鲜的眼睛可以暗示什么?如果您需要更多信息,请与我们联系。