私はDesafio(チャレンジ)とTagモデルとの多対多の関係をしようとしていますが、チャレンジには多くのタグがあり、タグは多くの課題に関連しています。多値多数null
var DesafioTag = new HashSet<int>(
desafio.Tags.Select(a => a.Id));
は私がやった方法を紹介します:ビュー上のタグは、問題は、私は、フォームを送信すると、それは価値がこの行のnullであると言うです
私のモデル
タグ〜
public class Tag
{
public int Id { get; set; }
public string NomeTag { get; set; }
public string cor { get; set; }
public virtual ICollection<ApplicationUser> Users { get; set; }
public virtual ICollection<Desafio> Desafios { get; set; }
}
Desafio(チャレンジ)
public class Desafio
{
public int DesafioId { get; set; }
public string TipoTrabalho { get; set; }
public virtual ApplicationUser User { get; set; }
public string ApplicationUserId { get; set; }
public string Descricao { get; set; }
public int TipoAvaliacaoId { get; set; }
public virtual TipoAvaliacao TipoAvaliacao { get; set; }
public decimal valor { get; set; }
public int Visualizacoes { get; set; }
public DateTime DataCriacao { get; set; }
public decimal lat { get; set; }
public decimal lon { get; set; }
public int IdSolucaoVencedora { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
それから私は、ビューのデータを表示するための2つのviewmodels
DesafioCreate
public class DesafioCreate
{
public string Desafio { get; set; }
public string Descricao { get; set; }
public decimal ValorMonetario { get; set; }
public decimal lat { get; set; }
public decimal lon { get; set; }
public ICollection<TagDesafio> TagDesafio { get; set; }
}
public class TagDesafio
{
public int TagId { get; set; }
public string Nome { get; set; }
public bool Seleccionado { get; set; }
}
012を持っています
私は既に多くの関係を編集するために何かをしていましたが、私はそれを行いましたが、作成方法ではうまくいかず、私の挑戦と関係があります。誰かが私に手を与えることができる場合は存在しませんが、原因はここには、私が思うのポストコードで、ということであれば、私は知らないの挑戦はここ
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(DesafioCreate model, string[] selectedTag,HttpPostedFileBase file)
{
TipoAvaliacao TipoAvaliacao = db.TiposAvaliacao.Where(i => i.TipoAvaliacaoId == 1).FirstOrDefault();
if (ModelState.IsValid)
{
Desafio desafio = new Desafio();
desafio.lat = model.lat;
desafio.lon = model.lon;
desafio.TipoTrabalho = model.Desafio;
desafio.Descricao = model.Descricao;
desafio.DataCriacao = DateTime.Now;
desafio.TipoAvaliacao = TipoAvaliacao;
desafio.valor = 22;
desafio.Visualizacoes = 34;
desafio.ApplicationUserId = User.Identity.GetUserId();
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Anexos"), fileName);
var anexo = new Anexo();
anexo.Caminho = path;
anexo.NomeFicheiro = fileName;
anexo.DesafioId = desafio.DesafioId;
db.Desafios.Add(desafio);
atualizarTagsDesafio(desafio, selectedTag);
db.SaveChanges();
return RedirectToAction("Index");
}
preencherTagDesafio();
return View(model);
}
private void atualizarTagsDesafio(Desafio desafio,
string[] selectedTag)
{
if (selectedTag == null)
{
desafio.Tags = new List<Tag>();
return;
}
var selectedAutoresHS = new HashSet<string>(selectedTag);
var DesafioTag = new HashSet<int>(// line that cause the error
desafio.Tags.Select(a => a.Id)); // line that cause the error
var Tags = db.Tags;
foreach (var tag in Tags)
{
if (selectedAutoresHS.Contains(tag.Id.ToString()))
{
if (!DesafioTag.Contains(tag.Id))
{
desafio.Tags.Add(tag);
}
}
else {
if (DesafioTag.Contains(tag.Id))
{
desafio.Tags.Remove(tag);
}
}
}
}
主な問題であり、私はこの関係をしている初心者です、そして、私は問題を見つけることができません。
シモンズ:私の悪い英語
のようなあなたのビューに見えるん何