cuốn sách gpt4 ai đã làm

c# - Tại sao Bộ điều khiển của tôi không điền các tham số Hành động?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 13:41:52 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi mới làm quen với MVC và tôi đã gặp sự cố.

Đọc blog của Stephen Walters (xem ĐÂY ), tôi thấy rằng các tham số hành động MVC cố gắng khớp dữ liệu trong đối tượng HttpRequest (các biến chuỗi truy vấn, biểu mẫu, cookie và máy chủ). Ví dụ của anh ấy cho thấy một thao tác tiêu chuẩn để nhận 2 giá trị:

Chỉ mục ActionResult công khai (chuỗi HTTP_USER_AGENT, chuỗi myCookie)
{
ViewData["HTTP_USER_AGENT"] = HTTP_USER_AGENT;
ViewData["myCookie"] = myCookie;
trả về Chế độ xem();
}

Điều này sẽ nhận được giá trị của HTTP_USER_AGENT và cookie (myCookie) nếu có.

Tuy nhiên, khi tôi thử chạy ví dụ này, cả hai tham số đều rỗng!

Cookie tồn tại (mà tôi đã tạo trước đó) và nếu tôi thử:

chuỗi c = Yêu cầu.Cookies["myCookie"].Value;

Nó có giá trị như tôi mong đợi! Điều khó hiểu hơn nữa là HTTP_USER_AGENT trống

Có ý tưởng gì không? ? ?

谢谢!!!

câu trả lời hay nhất

MVC 3 trở lên chứa 4 bộ sưu tập các nhà cung cấp giá trị mặc định:

Hình thức,Tuyến đườngDữ liệu,Chuỗi truy vấnTài liệu.

Không có nhà cung cấp giá trị nào cho cookie và biến máy chủ. Nhưng có vẻ như bạn có thể viết các nhà cung cấp giá trị của riêng mình cho những bộ sưu tập này.

Ví dụ về bánh quy:

lớp công khai CookieValueProviderFactory : ValueProviderFactory
{
lớp công khai CookieValueProvider : IValueProvider
{
HttpCookieCollection _cookies riêng tư chỉ đọc;

CookieValueProvider công khai(cookie httpCookieCollection)
{
_cookie = cookie;
}

bool công khai ChứaPrefix(tiền tố chuỗi)
{
return _cookies.AllKeys.Any(x => x.Contains(tiền tố));
}

public ValueProviderResult GetValue(string key)
{
nếu (_cookie == null)
{
return null;
}

var val = _cookies[key] == null : _cookies[key].ToString();
var val = _cookie[key];
trả về val != null
? ValueProviderResult mới (val, val.ToString(), CultureInfo.CurrentCulture)
: vô giá trị;
}
}

ghi đè công khai IValueProvider GetValueProvider(ControllerContext controlContext)
{
trả về CookieValueProvider mới (controllerContext.HttpContext.Request.Cookies);
}
}

Và đăng ký nó trong Global.asax:

protected void Application_Start()
{
...

ValueProviderFactories.Factories.Add(CookieValueProviderFactory() mới);
Đăng kýRoutes(...)
}

Giới thiệu về C# - Tại sao Bộ điều khiển của tôi không điền các tham số Hành động? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/16737634/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress