Я разрабатываю приложение ASP .Net MVC 3 с использованием C# и SQL Server 2005. Я использую также Entity Framework и Code First Method. У меня есть представление «Индекс», содержащее ссылку на другое представление «Обновление». Проблема, что при отладке значение представления равно NULL.Модель просмотра пропускает NULL в ASP MVC
Вид заселен контроллером, имя которого является ProfileGa.
это часть кода контроллера ProfileGa:
public ActionResult Update(string id)
{
FlowViewModel flv = db.FlowViewModels.Find(id);
return View(flv);
}
[HttpPost]
public ActionResult Update(FlowViewModel model)
{
Console.WriteLine("" + model.Nbr_Passage);
Gamme G = new Gamme();
ListG.Remove(G);
db.Gammes.Remove(G);
G.ID_Gamme = model.SelectedProfile_Ga;
G.ID_Poste = model.SelectedPoste;
G.Last_Posts = model.PostePrecedentSelected;
G.Next_Posts = model.PosteSuivantSelected;
G.Nbr_Passage = int.Parse(model.Nbr_Passage);
G.Position = int.Parse(model.Position);
ListG.Add(G);
db.Gammes.Add(G);
db.SaveChanges();
return RedirectToAction("Index");
}
Когда я поставил точку останова на линии:
FlowViewModel flv = db.FlowViewModels.Find(id);
Значение FLV является нулевым. Возможно, нет записи с указанным идентификатором в базе данных.
Я не могу углубляться в методе Найти, потому что код этого метода предопределен (я его не написал). Это метод DbSet.
Тот же код работает с другими видами, но только этим.
Я думаю, что проблема зависит от ID (ID_Gamme), который является DropDownList, не похожим на других (TextBox).
Эта часть кода индекса вида, который содержит ссылку для просмотра Update:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.FlowViewModel>" %>
<%@ Import Namespace="Helpers" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<table>
<% foreach (var item in Model.GaItems) { %>
<tr>
<td>
<%: Html.DisplayFor(modelItem => item.ID_Gamme) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.ID_Poste) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Nbr_Passage) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Position) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Last_Posts) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.Next_Posts) %>
</td>
<td>
<%: Html.ActionLink("Modifier", "Update", new { id=item.ID_Gamme }) %>
</td>
</tr>
<% } %>
</table>
</asp:Content>
и это код модели FlowViewModel:
public class FlowViewModel
{
[Key]
public string IDv { get; set; }
[NotMapped]
public SelectList PostesItems { get; set; }
public List<Profile_Ga> Profile_GaItems { get; set; }
public List<Gamme> GaItems { get; set; }
public string SelectedProfile_Ga { get; set; }
public string SelectedPoste { get; set; }
public string PostePrecedentSelected { get; set; }
public string PosteSuivantSelected { get; set; }
public string Position { get; set; }
public string Nbr_Passage { get; set; }
public List<Gamme> ListG = new List<Gamme>();
}
Часть Gestion.ascx:
<% using (Html.BeginForm("Save", "Anouar")) { %>
<%: Html.ValidationSummary(true) %>
<fieldset class="parametrage">
<legend>Gestion de Gamme</legend>
<div><%:Html.Label("Poste :")%><%: Html.DropDownListFor(model => model.SelectedPoste, Model.PostesItems)%></div>
<div><%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(model=>model.Nbr_Passage)%></div><div class="editor-field"> <%: Html.ValidationMessageFor(model => model.Nbr_Passage)%></div>
<div><%:Html.Label("Position :")%><%: Html.EditorFor(model=>model.Position)%></div>
<div><%:Html.Label("Poste Précédent :")%><%: Html.DropDownListFor(model => model.PostePrecedentSelected, Model.PostesItems)%></div>
<div><%:Html.Label("Poste Suivant :")%><%: Html.DropDownListFor(model => model.PosteSuivantSelected, Model.PostesItems)%></div>
<div><input type="submit" value="Enregistrer" id="btnSave" /></div>
</fieldset>
...
ли года uput контрольной точки ON 'FlowViewModel FLV = db.FlowViewModels.Find (идентификатор),' или линии после этого, потому что, если вы поместите его в эту строку, он будет пустым, потому что эта строка еще не назначила его –
Привет, Ануар, я помог по нескольким вопросам, поэтому я подумал, что FlowViewModel - это ViewModel, а не Entity в базы данных, если вы не сделали ее в таблицу в базе данных, но это не имеет большого смысла? Это таблица в базе данных? Если нет, как вы пытаетесь найти его в БД? Кроме того, поскольку Колм указывает, какое значение ПОСЛЕ этого вызова, когда значение должно быть установлено. – Belogix
Имеет ли 'id' ожидаемое значение при его отладке? Если проблема заключается в том, что '.Find()' не находит ее, то похоже, что проблема не в каком-либо из кода, а в доступе к данным. Возможно, запись, которую вы ищете, не существует? Вы смотрите в правильные сущности? – David