Сообщение было отмечено DanilAndreevich как решение
Решение
Добрый день, столкнулся с такой ошибкой :
Элемент модели, переданный в словарь, имеет тип "System.Guid", но для этого словаря требуется элемент модели типа "test.Models.DomenModel.BalanceRow".
HTML5 | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.InvalidOperationException: Элемент модели, переданный в словарь, имеет тип "System.Guid", но для этого словаря требуется элемент модели типа "test.Models.DomenModel.BalanceRow".
Ошибка источника:
Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.
Трассировка стека:
[InvalidOperationException: Элемент модели, переданный в словарь, имеет тип "System.Guid", но для этого словаря требуется элемент модели типа "test.Models.DomenModel.BalanceRow".]
System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +175
System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +107
System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData) +49
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +99
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9987157
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 |
|
Как ее решить , ума не приложу.
Опишу ситуацию :
есть страница в которой я осуществляю создание сотрудника, далее добавляю ему баллы. Сейчас делаю кнопку чтобы посмотреть историю начислений . Есть 2 таблицы которые связаны с идентификатором уникальным personID , и пытаюсь по нему выводить данные.
Как это выглядит в коде.
Controller :
C# | 1
2
3
4
5
6
7
8
9
10
11
12
13
| public ActionResult Details(Guid ID)
{
return View(ID);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Details(Guid ID,Guid PersonID, int bal)
{
balanceService.DetailsView(ID,PersonID,bal);
return View(PersonID);
} |
|
PersonService :
C# | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public void Details()
{
var persons = (from p in context.Balance
select new
{
p.Id,
p.PersonID,
p.Date,
p.Bal
}
).ToList();
var BalanceRows = persons.Select(x => new Balance
{
Id = x.Id,
PersonID = x.PersonID,
Date = x.Date,
Bal = x.Bal
}).ToList();
return;
} |
|
IbalanceService :
C# | 1
2
3
4
5
6
| public interface IBalanceService
{
BalanceRow DetailsView(Guid ID,Guid PersonID, int bal);
void SetBal(Guid personID, int bal);
} |
|
BalanceService :
C# | 1
2
3
4
5
6
7
8
9
10
11
| public BalanceRow DetailsView(Guid ID,Guid PersonID,int bal)
{
var balance = new Balance
{
Id = Guid.NewGuid(),
Bal = bal,
Date = DateTime.Now,
PersonID = PersonID
};
return new BalanceRow();
} |
|
DomenModel (Balance) :
C# | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| namespace test.Models.DomenModel
{
public class BalanceRow
{
public Guid Id { get; set; }
public Guid? PersonID { get; set; }
public DateTime? Date { get; set; }
public int? Bal { get; set; }
}
public class BalanceList : List<BalanceRow>
{
public BalanceList()
{
}
public BalanceList(List<BalanceRow> rows) : base(rows)
{
}
}
} |
|
и само представление :
HTML5 | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| @model test.Models.DomenModel.BalanceRow
<div>
<h4>BalanceRow</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.PersonID)
</dt>
<dd>
@Html.DisplayFor(model => model.PersonID)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Date)
</dt>
<dd>
@Html.DisplayFor(model => model.Date)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Bal)
</dt>
<dd>
@Html.DisplayFor(model => model.Bal)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.Id }) |
@Html.ActionLink("Back to List", "Index")
</p> |
|
Так же прикладываю структуру проекта (во вложении)
0
|