【发布时间】:2012-02-24 14:07:35
【问题描述】:
我被困住了,在查了几个小时之后,我想我需要更多的眼球。
情况如下:
这是一个带有 Entity Framework 4 项目的 Asp.Net MVC3。我有两节课。一个配置文件和另一个操作。两者之间存在一对多的关系。这是代码的简化视图:
public class ConfigurationFile
{
[Key, Required]
[Column(TypeName = "uniqueidentifier")]
public Guid Id { get; set; }
[Required]
public string Name { get; set; }
[Column(TypeName = "uniqueidentifier")]
[Required]
public Guid ActionId { get; set; }
public virtual Models.Action Action { get; set; }
}
public class Action
{
[Key, Required]
[Column(TypeName = "uniqueidentifier")]
public Guid Id { get; set; }
[Required]
public string ActionValue { get; set; }
}
然后我想创建一个新的ConfigurationFile,并且是我的两个控制器方法(此时,这是95%的Visual Studio 10生成的代码):
// db is my context class.
//
// GET: /Configuration/Create
public ActionResult Create()
{
ViewBag.ActionId = new SelectList(db.Actions, "Id", "ActionValue");
return View();
}
//
// POST: /Configuration/Create
[HttpPost]
public ActionResult Create(Models.ConfigurationFile configurationfile)
{
if (ModelState.IsValid)
{
configurationfile.Id = Guid.NewGuid();
db.ConfigurationFiles.Add(configurationfile);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ActionId = new SelectList(db.Actions, "Id", "ActionValue", configurationfile.ActionId);
return View(configurationfile);
}
这是我的 Create 视图的 sn-p:
@model MyProject.Areas.ConfigurationFile.Models.ConfigurationFile
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Configuration File</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ActionId, "Action")
</div>
<div class="editor-field">
@Html.DropDownList("ActionId", String.Empty)
@Html.ValidationMessageFor(model => model.ActionId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
当我打开 Create 页面时,我可以清楚地看到 Action 类的下拉列表很好(正确的值 -- Action.Id -- 和文本 -- Action.ActionValue -- )但是当我提交表单时,我有以下错误:“从类型'System.String'到类型'MyProject.Models.Action'的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。”
请帮忙!!
【问题讨论】:
-
有关信息,我已经在 SO 上查看了与同一问题相关的许多其他问题。但是没有一个答案可以解决我的问题)c:
-
由于使用了
reserve word,我遇到了类似的错误。因此,如果问题是由类似问题引起的,您可以查看我在The parameter conversion from type 'System.String' to type 'T' failed because no type converter can convert between these types 上的回答。希望这会有所帮助...
标签: asp.net entity-framework drop-down-menu type-conversion