asp.net - net - input type submit html actionlink
Cómo compartir HTML entre proyectos ASP.NET MVC4 (4)
ASP.NET MVC buscará en la misma asamblea para la vista. Colocar la Vista o HTML en un ensamblaje diferente será incómodo para el marco. Internamente, no creo que el marco admita la ubicación de la Vista / HTML fuera del alcance del ensamblaje. Es posible que deba escribir algún código personalizado o ampliar el marco, su código abierto.
Tengo un par de sitios web que estoy construyendo que muestran datos iguales o similares en las páginas. Para reducir la duplicación de código, lo que hice fue crear un tercer proyecto / sitio web y pensé que lo usaría como la ubicación para HTML compartido, java-script, CSS, imágenes, etc.
Puedo incluir JavaScript, CSS e imágenes bien del proyecto compartido utilizando rutas relativas. Sin embargo, no puedo hacer páginas parciales de HTML. al intentar acceder a los dos sitios web que intentan cargar una página parcial utilizando un código como el siguiente:
@RenderPage("/SharedArtifacts/Views/MySharedViewscshtml")
Me sale la siguiente respuesta:
The virtual path ''/SharedArtifacts/Views/MySharedViewscshtml'' maps to another application, which is not allowed.
Ahora he buscado en Google y he intentado usar el prefijo ~
para especificar la raíz de la ruta para resolver el problema, pero en vano ... sigue siendo el mismo error.
¿Alguna idea sobre cómo resolver este problema?
Cuando necesito compartir código entre varios proyectos, generalmente uso la función de abrir como enlace de Visual Studio. Esto le permite tener un archivo para múltiples proyectos.
https://msdn.microsoft.com/en-us/library/windows/apps/jj714082(v=vs.105).aspx
Hacemos esto todo el tiempo. La forma simple (sin programación) es crear carpetas virtuales en IIS que se asignan a una carpeta compartida común a todos los sitios complementarios. Normalmente lo hacemos para las páginas de resultados de error y otro contenido genérico.
/Views/SharedVirtual/somefile.ascx
La ruta /Views/SharedVirtual
se asigna a través de las carpetas virtuales de IIS. Luego, en los controladores podemos hacer una return View("/Views/SharedVirtual/somefile.ascx",somemodel);
. También funciona con RenderPartial también.
Localmente, al trabajar con los proyectos, uso mklink para crear un punto de unión en la carpeta del proyecto que se asigna a la carpeta común compartida. De esa manera, VS piensa que la carpeta es local cuando no lo está y puede ejecutar el proyecto localmente para la depuración.
Normalmente no usamos Razor, pero el concepto debería funcionar de la misma manera ya que no es VS el que realiza la asignación de recursos compartidos, es el sistema operativo y el IIS.
Una advertencia es que si edita las vistas, éstas cambiarán en todos los proyectos, por lo que debe tener cuidado con sus ediciones para asegurarse de que sean compatibles cuando se usen en todos los proyectos que las mencionan.
Las vistas que desea representar residen fuera de la raíz de la aplicación web. Esto no está permitido al menos por razones de seguridad.
Sin embargo, lo que puede hacer es incrustar los veiws (.cshtml) como recursos al seleccionar la acción de compilación "Incrustar como recurso" en lugar de la predeterminada. Luego, al usar el administrador de paquetes NuGet, instale y use un proveedor de ruta virtual capaz de representar las vistas ya integradas como here , here o here .