我是MVC的新手,在尝试将现有网站移植到MVC4时遇到了这个问题.
我们使用的模型中大部分数据都是由服务调用填充的,所以显然我们希望将调用保持在最低限度.问题是,当我尝试将模型传递回控制器时,模型中的复杂对象总是变为空.我已经能够使用ajax将数据保留在回调控制器上; 但是,我需要操作来返回一个新视图,并且在操作完成后,视图的代码会执行,但是没有重定向(我认为这是ajax的重点,我认为我要求的是一个解决方案将以相同的方式持久保存数据但实际重定向).
这是我的模型:
public class DistributionModel
{
public string typeOfDistribution { get; set; }
public Document document { get; set; }
public string thumbnailUrl { get; set; }
public MergeFieldModel mergeFields { get; set; }
}
public class MergeFieldModel
{
public MergeFields documentMergeFields { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的控制器操作:
public ActionResult Index(DistributionModel distributionModel)
{
distributionModel.mergeFields = new MergeFieldModel() { documentMergeFields = MergeFieldsHelper.GetDocumentMergeFields(distributionModel.document.Id) };
return View("Index", distributionModel);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用href =@Url.Action("Index",Model)而不是下面块中的按钮来调用控制器并执行重定向(重定向本身确实有效,但我必须在其中执行另一个服务调用控制器检索与我在调用视图中使用的文档相同的文档)因为模型中的Document对象保持返回为控制器的NULL.
以下是调用控制器并实际返回完整模型的视图部分:我认为我正在寻找的是一种在没有ajax的情况下实现此目的的方法,以便我可以获得重定向到分发/索引页面(这是从Distribution/DocumentDetails页面中触发)
<button id="EmailDistribution" data-corners="false" data-theme="a">EMAIL</button>
$('#EmailDistribution').click(function () {
var model …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×1