我已经创建了一个简单的WCF服务,它将由一个MVC3 UI进行配置。
当我从控制器调用索引页时,我希望显示配置中保存的值,该值已由服务返回。然后,用户可以选择编辑这些设置,然后将它们发送回服务。
我想在索引视图中这样做...
<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();
}
}但这不管用。
有什么建议吗?
发布于 2011-11-17 23:10:02
在发布表单时,将收集所有输入类型字段数据并将其发送到服务器。您可以使用FireBug查看此数据。这里的关键点是,在表单中发布的数据,MVC的默认模型绑定器可以理解并将其映射到模型对象,该对象将作为输入参数传递给操作方法。
在您的示例中,模型的类型为"SettingsModel“。您必须确保正在发布的表单数据是可以映射到"SettingsModel“对象的格式。
在另一个线程中讨论的相同类型的问题:Can't figure out why model is null on postback?
查看这篇文章:NerdDinner Step 6: ViewData and ViewModel
在上面的文章中,请仔细阅读“使用ViewModel模式”一节。我的猜测是,这就是你要找的。
发布于 2011-11-17 21:37:31
您将需要post这些值以填充编辑操作中的SettingsModel对象。如果不想让用户看到,您可以使用隐藏的表单域来完成此操作。否则,您可能没有Edit操作的参数,并再次调用web服务来填充Settings模型。
https://stackoverflow.com/questions/8167936
复制相似问题