我创建了一个由MVC3 UI配置的简单WCF服务。
当我从控制器调用索引页面时,我想显示配置中保存的值,该值已由服务返回。然后,用户可以选择编辑这些设置,然后将其发送回服务。
我想在索引视图中执行类似的操作...
<div>
@Html.ActionLink("Edit", "Edit", model)
</div>
然后像这样使用控制器中的模型......
[HttpPost]
public ActionResult Edit( SettingsModel Config)
{
try
{
List<string> configErrors = null;
if (ModelState.IsValid)
{
// Set up a channel factory to use the webHTTPBinding
using (WebChannelFactory<IChangeService> serviceChannel = new WebChannelFactory<IChangeService>(new Uri(baseServiceUrl)))
{
IChangeService channel = serviceChannel.CreateChannel();
configErrors = channel.SetSysConfig(Config);
}
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
但这不起作用。
任何建议???
答案 0 :(得分:1)
发布表单后,将收集所有输入类型字段数据并将其发送到服务器。您可以使用FireBug查看此数据。这里的关键点是,是在表单中发布的数据,MVC的默认模型绑定器可以理解并将其映射到模型对象,模型对象作为输入参数传递给action方法。
在您的情况下,模型的类型为“SettingsModel”。您必须确保正在发布的表单数据采用格式,可以映射到“SettingsModel”对象。
在另一个帖子中讨论了同样的问题:Can't figure out why model is null on postback?
查看此文章:NerdDinner Step 6: ViewData and ViewModel
在上面的文章中,请仔细阅读“使用ViewModel模式”部分。我的猜测是,这就是你要找的东西。
答案 1 :(得分:0)
您需要发布值以在Edit操作上填充SettingsModel对象。如果您不希望用户看到它,您可以使用隐藏的表单字段执行此操作。否则,您可以在“编辑”操作上没有参数,并再次调用Web服务以填充“设置”模型。