我正在使用EF進行簡單域名管理的應用程序。它包含數據庫中的客戶端,域和TLD類型。試圖讓視圖記住ClientID
我已經創建了控制器,允許我分別在我的數據庫中創建客戶端,域和TLD。我想要實現的是,可以直接在客戶頁面下添加域名,以避免每次創建新域名時選擇ClientID,並儘量減少要通過的頁面數量,以便在數據庫中創建新的域名。
到目前爲止,這裏是我使用的模型:
Klient (client model) :
public class Klient
{
public int KlientID { get; set; }
public string Imie { get; set; }
public string Nazwisko { get; set; }
public string Firma { get; set; }
public virtual ICollection<Domena> Domeny { get; set; }
}
DOMENA(域模型):
public class Domena
{
public int DomenaID { get; set; }
public int TLDID { get; set; }
public int KlientID { get; set; }
public string Nazwa { get; set; }
public virtual TLD TLD { get; set; }
public virtual Klient Klient { get; set; }
}
TLD(頂級域名模型):
public class TLD
{
public int TLDID { get; set; }
public string Typ { get; set; }
public int Cena { get; set; }
public virtual ICollection<Domena> Domeny { get; set; }
}
控制方法這讓我創建的新域名是:
// GET: /Domena/Create
public ActionResult Create()
{
ViewBag.TLDID = new SelectList(db.TLDs, "TLDID", "Typ");
ViewBag.KlientID = new SelectList(db.Klienci, "KlientID", "Firma");
return View();
}
//
// POST: /Domena/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Domena domena)
{
if (ModelState.IsValid)
{
db.Domeny.Add(domena);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.TLDID = new SelectList(db.TLDs, "TLDID", "Typ", domena.TLDID);
ViewBag.KlientID = new SelectList(db.Klienci, "KlientID", "Imie", domena.KlientID);
return View(domena);
}
這就是創建視圖的字段集:
<fieldset>
<legend>Domena</legend>
<div class="editor-label">
@Html.LabelFor(model => model.TLDID, "TLD")
</div>
<div class="editor-field">
@Html.DropDownList("TLDID", String.Empty)
@Html.ValidationMessageFor(model => model.TLDID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.KlientID, "Klient")
</div>
<div class="editor-field">
@Html.DropDownList("KlientID", String.Empty)
@Html.ValidationMessageFor(model => model.KlientID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Nazwa)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Nazwa)
@Html.ValidationMessageFor(model => model.Nazwa)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
權,我想要做的就是DomenaController下創建一個新的方法(如上面的創建方法位於)呼籲Add_Domain和新景觀爲那個Add_Domain方法,這將允許我在當前查看的客戶端下創建一個新的域名。所以我想運行應用程序並轉到/客戶端/索引點擊客戶端的詳細信息,可以說ID = 6,所以我現在正在查看客戶端/詳細信息/ 6。在這個頁面上我已經添加了以下行動鏈接:
@Html.ActionLink("Add Domain", "Add_Domain", "Domena", new { id = Model.KlientID })
這給了我奇怪的鏈接: /Klient/Add_Domain長度= 6 代替: /域/ Add_Domain/6 然而,當我刪除「新{id = Model.KlientID}」位它創建正常鏈接雖然...
無論如何,我如何修改GET和POST httpPost,所以我不必從列表和域中選擇客戶端名稱將被添加到我點擊Add_Domain方法的客戶端中?
編輯: RouteConfig
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
編輯2:現在
鏈接的問題是固定的,非常感謝你。問題的其他部分仍然存在:上面描述的新Add_Domain方法應該如何(GET和POST)? - 它應該採用KlientID的值,而不是顯示可供選擇的客戶端列表。
你可以發佈項目的路線配置嗎? – StringBuilder
@StringBuilder,添加到我的問題底部。 – Abbys
歡迎來到Stackoverflow!沒有必要爲標題添加標籤,這裏有一個標籤系統。請閱讀http://meta.stackexchange.com/q/19190瞭解更多信息。 – Patrick