Ich habe eine Ansicht mit dem Namen 'Details', die eine Teilansicht 'PostReply' enthält. Ich versuche, eine ID aus der Detailansicht an die PostReply-Controller-Aktion zu übergeben.Übergeben eines ID-Wertes an die Teilansicht
Ich habe dies in der Detailansicht versucht, aber es drückt Nullwert der ID.
@Html.Partial("PostReply", new XXXXX.Models.Reply{ QuestionId = Model.Question.ID })
Dann habe ich versucht, einen ID-Wert zu Begin in Antworten (Teilansicht) wie folgt ergänzt:
Html.BeginForm("PostReply", "Question", new { id = Model.Question.ID}))
Das funktioniert auch nicht. Wie kann ich ID-Wert von Details zu PostReply bekommen? Danke im Voraus.
Details anzeigen:
@model XXXXXX.Models.ParentView.Questions
....
@Html.DisplayNameFor(model => model.QuestionModel.Title)
@Html.DisplayNameFor(model => model.QuestionModel.Desc)
....
@Html.ActionLink("Edit", "Edit", new { id = Model.QuestionModel.ID }) |
@Html.ActionLink("Back to List", "Index")
....
@Html.Partial("PostReply", new Chemtalks.Models.Reply())
Antworten (Teilansicht):
@model XXXXX.Models.Reply
@using (Html.BeginForm("PostReply", "Question", FormMethod.Post))
{
@Html.LabelFor(model => model.ReplyText)
@Html.EditorFor(model => model.ReplyText)
@Html.ValidationMessageFor(model => model.ReplyText
<input type="submit" value="Create" class="btn btn-default" />
}
Einzelheiten & Antworten Controller:
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var model = new ParentView.Questions
{
QuestionModel = db.QuestionModels.Find(id),
Reply = db.Replies.Where(t => t.QuestionId == id)
};
if (model == null)
{
return HttpNotFound();
}
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult PostReply([Bind(Include = "ReplyID, ReplyText, UserID, QuestionId")] Reply reply, int? id)
{
try
{
if (ModelState.IsValid)
{
reply.QuestionId = id;
reply.UserID = User.Identity.GetUserId();
db.Replies.Add(reply);
db.SaveChanges();
}
}
catch (DataException)
{
ModelState.AddModelError("", "Unable to post your reply. Please try again later.");
}
return PartialView(reply);
}
QuestionModel:
public class QuestionModels
{
public int ID { get; set; }
public string Title { get; set; }
public string Desc { get; set; }
public string UserID { get; set; }
[ForeignKey("QuestionId")]
public virtual ICollection<Reply> Replies { get; set; }
}
public class Reply
{
public int ReplyID { get; set; }
public string ReplyText { get; set; }
public string UserID { get; set; }
public int? QuestionId { get; set; }
public virtual QuestionModels QuestionsModels { get; set; }
}
ParentView Modell:
public class ParentView
{
public class Questions
{
public QuestionModels QuestionModel { get; set; }
public IEnumerable<Reply> Reply { get; set; }
}
}
Sie haben die Modelle nicht gezeigt, aber 'neue XXXXX.Models.Reply {QuestionID = Model.Question.ID})' 'bedeutet Reply' eine Eigenschaft enthält namens' QuestionId' so Ihre Ich vermute Will '' neue {ID = Model.QuestionId} 'in Ihrem Formular (nicht' Model.Question.ID', die wahrscheinlich eine NullReferenceException werfen würde) –
Ich habe auch Modelle hinzugefügt. QuestionId ist ein Fremdschlüssel in einer Tabelle Reply und ich versuche, es mit der ID der Questionmodel-Tabelle zu füllen – ashhad
Lassen Sie mich zuerst alle irrelevanten Code bearbeiten und entfernen. –