ASP.NET MVC点击Forum视图按钮将ProjeAdi存入登录Ogrenci的BekleyenProje实现方法
实现步骤
1. 为ForumController新增项目申请处理方法
在ForumController类中添加如下Action方法,用于处理按钮点击后的业务逻辑:
[HttpPost] public ActionResult ProjeBasvuruYap(int projeId) { // 校验用户登录状态 if (Session["OgrenciID"] == null) { return RedirectToAction("Login", "Security"); } int girisYapanOgrenciId = (int)Session["OgrenciID"]; // 查询当前登录学生信息 var ogrenci = db.Ogrenciler.Find(girisYapanOgrenciId); // 查询被申请的项目信息 var proje = db.Projeler.Find(projeId); if (ogrenci != null && proje != null) { // 可选校验:避免同一项目重复申请 if (ogrenci.BekleyenProje == proje.ProjeAdi) { TempData["Mesaj"] = "Bu projeye zaten başvuru yaptınız!"; return RedirectToAction("Index"); } // 写入待审核项目字段 ogrenci.BekleyenProje = proje.ProjeAdi; db.SaveChanges(); TempData["Mesaj"] = "Proje başvurunuz alınmıştır, onay bekliyor."; } else { TempData["Mesaj"] = "Geçersiz işlem!"; } return RedirectToAction("Index"); }
2. 修改Forum Index视图代码
首先在视图顶部添加操作提示的展示区域:
@if (TempData["Mesaj"] != null) { <div class="alert alert-info">@TempData["Mesaj"]</div> }
再把你标注的目标空按钮替换为如下代码,适配登录/未登录状态的交互:
@if (Session["OgrenciID"] != null) { using (Html.BeginForm("ProjeBasvuruYap", "Forum", new { projeId = item.ProjeID }, FormMethod.Post)) { <button type="submit" class="login-button">Projeye Başvur</button> } } else { <button type="button" class="login-button" onclick="location.href='@Url.Action("Login", "Security")'">Giriş Yapıp Başvur</button> }
可选优化说明
如果后续需要支持一个学生同时申请多个项目,当前Ogrenci模型里的BekleyenProje单字符串字段会出现数据覆盖问题,建议新增学生-待审核项目的中间关联表存储对应关系,适配多申请场景。
内容的提问来源于stack exchange,提问作者caner0zkan
相关产品推荐
相关产品推荐

