Entah apakah ini terjadi dalam PR atau Beta, tetapi jika saya membuat metode ekstensi aktif HtmlHelper
, itu tidak dikenali di halaman bertenaga silet:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Saya menambahkannya ke <Namespaces>
bagian di Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Tapi itu melempar kesalahan kompilasi ketika mencoba melihat halaman:
@Html.Foo()
Jika saya membuat ulang halaman dengan WebForms itu berfungsi dengan baik. Apa masalahnya?
Penanganan masalah
Jika saya termasuk @using SomeNamespace.Extensions
dalam tampilan Razor saya, maka itu berfungsi, tetapi saya lebih suka memilikinyaWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
swilliams
sumber
sumber
Jawaban:
Sejak Beta, Razor menggunakan bagian konfigurasi yang berbeda untuk impor namespace yang didefinisikan secara global. Dalam
Views\Web.config
file Anda, Anda harus menambahkan yang berikut:Gunakan alat pemutakhiran MVC 3 untuk secara otomatis memastikan Anda memiliki nilai konfigurasi yang tepat.
Perhatikan bahwa Anda mungkin perlu menutup dan membuka kembali file agar perubahan dapat diambil oleh editor.
sumber
Seperti jawaban yang diterima menyarankan Anda dapat menambahkan "menggunakan" ke semua tampilan dengan menambahkan ke bagian file konfigurasi.
Tetapi untuk satu tampilan Anda hanya bisa menggunakan
sumber
Saya memiliki kesalahan yang sama dalam aplikasi MVC 4 menggunakan Razor. Dalam upaya untuk membersihkan file web.config, saya menghapus dua
webpages:
nilai konfigurasi:Setelah saya mengembalikan nilai konfigurasi ini, halaman akan dikompilasi dengan benar dan kesalahan mengenai
.Partial()
metode ekstensi menghilang.sumber
Saya memiliki masalah ini di VS 2015. Berikut ini yang menyelesaikannya untuk saya:
Temukan "halaman web: Versi" di pengaturan aplikasi dan perbarui ke versi 3.0.0.0. Web.config saya punya
dan saya memperbaruinya ke
sumber
Saya menemukan bahwa menempatkan bagian ini di web.config saya untuk setiap folder tampilan menyelesaikannya.
sumber
0.0.0.0-2.0.0.0
ke1.0.0.0
), dan/View/web.config
file tidak menimpanya. (Juga, saya tidak percaya Anda membutuhkannya di setiap/View/Subfolder/
)Kesalahan ini memberi tahu Anda bahwa Anda tidak memiliki mesin cukur yang terkait dengan proyek Anda.
Solusi: Di jendela Solution Explorer klik kanan pada proyek web Anda dan pilih "Kelola Paket Nuget ..." lalu instal "Microsoft ASP.NET Razor". Ini akan memastikan bahwa paket yang benar diinstal dan itu akan menambahkan entri yang diperlukan ke file web.config Anda.
sumber
Dalam kasus saya, gunakan VS 2013, dan itu tidak mendukung MVC 3 secara native (bahkan dari Anda berubah ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
sumber
Sejak ASP.NET MVC 3 RTM keluar tidak perlu untuk bagian konfigurasi untuk Razor. Dan bagian ini dapat dihapus dengan aman.
sumber