2011-11-28 28 views
23

Có điều gì sai với html này không? Tôi muốn có một liên kết trong trang chủ để điều hướng đến chế độ xem "CreateParts". Tôi có hành động 'CreateParts' có một tham số parentPartId trong bộ điều khiển 'PartList'.Truyền thông số cho hành động của bộ điều khiển từ một Html.ActionLink

<li id="taskAdminPartCreate" runat="server"> 
            <%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 })%></li> 

controller action của tôi là như

public ActionResult CreateParts(int parentPartId) 
    { 
     HSPartList objHSPart = new HSPartList(); 
     objHSPart.Id = parentPartId; 
     return View(objHSPart); 
    } 

Khi tôi bấm vào 'Tạo mới Phần' trong menu trong SiteMaster, tôi nhận được ngoại lệ. Xin hãy giúp tôi về điều này.

+2

Thêm ngoại lệ cho câu hỏi sẽ là tốt đẹp :) –

+13

dude, máy chủ runat = máy đang chạy trên máy tính tiền tệ đó là gì? dont hiếp dâm MVC :) – rouen

+0

rouen, bạn có thể giúp với thực hành tốt nhất trong asp.net mvc –

Trả lời

55

Bạn đang sử dụng quá tải không chính xác. Bạn nên sử dụng quá tải này

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName, 
    Object routeValues, 
    Object htmlAttributes 
) 

Và mã đúng sẽ là

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%> 

Lưu ý rằng tham số thêm vào cuối. Đối với các tình trạng quá tải khác, hãy truy cập LinkExtensions.ActionLink Method. Như bạn có thể thấy không có tình trạng quá tải string, string, string, object mà bạn đang cố gắng sử dụng.

+1

Bạn là tuyệt vời @archill. Bạn đã tiết kiệm rất nhiều thời gian, cảm ơn –

+0

Cảm ơn, tôi đã bỏ lỡ null. –

10

Bạn đang sử dụng quá tải ActionLink không chính xác. Hãy thử điều này

<%= Html.ActionLink("Create New Part", "CreateParts", "PartList", new { parentPartId = 0 }, null)%> 
9

bổ sung câu trả lời được chấp nhận:

nếu bạn đang sử dụng

@Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 },null) 

này sẽ tạo ActionLink nơi bạn không thể tạo thuộc tính tùy chỉnh mới hay phong cách cho liên kết.

Tuy nhiên, tham số thứ 4 trong tiện ích ActionLink sẽ giải quyết vấn đề đó. Sử dụng tham số thứ 4 để tùy chỉnh theo cách của bạn.

@Html.ActionLink("LinkName", "ActionName", "ControllerName", new { @id = idValue, @secondParam= = 2 }, new { @class = "btn btn-info", @target = "_blank" }) 
Các vấn đề liên quan