GitLab имеет функцию специфичных для проекта ключей SSH:
Они называются Ключи развертывания . Вы можете использовать их для предоставления доступа только для чтения или для чтения / записи для одного или нескольких хранилищ.
Я просмотрел исходный код MVC, чтобы понять, смогу ли я понять, как это сделать. Кажется, существует очень тесная связь между контекстом контроллера, представлениями, данными представления, данными маршрутизации и методами рендеринга html.
В основном, чтобы это произошло, вам необходимо создать все эти дополнительные элементы. Некоторые из них относительно просты (например, данные представления), но некоторые немного сложнее - например, данные маршрутизации будут учитывать, что текущая страница WebForms игнорируется.
Большая проблема, по-видимому, заключается в страницах HttpContext - MVC полагаться на HttpContextBase (а не на HttpContext, как это делают WebForms), и хотя оба реализуют IServiceProvider, они не связаны. Разработчики MVC приняли сознательное решение не изменять устаревшие WebForms для использования новой контекстной базы, однако они предоставили оболочку.
Это работает и позволяет вам добавить частичное представление в WebForm:
public class WebFormController : Controller { }
public static class WebFormMVCUtil
{
public static void RenderPartial( string partialName, object model )
{
//get a wrapper for the legacy WebForm context
var httpCtx = new HttpContextWrapper( System.Web.HttpContext.Current );
//create a mock route that points to the empty controller
var rt = new RouteData();
rt.Values.Add( "controller", "WebFormController" );
//create a controller context for the route and http context
var ctx = new ControllerContext(
new RequestContext( httpCtx, rt ), new WebFormController() );
//find the partial view using the viewengine
var view = ViewEngines.Engines.FindPartialView( ctx, partialName ).View;
//create a view context and assign the model
var vctx = new ViewContext( ctx, view,
new ViewDataDictionary { Model = model },
new TempDataDictionary() );
//render the partial view
view.Render( vctx, System.Web.HttpContext.Current.Response.Output );
}
}
Затем в вашей WebForm вы можете сделать это:
<% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>
самый очевидный путь был бы через Ajax
что-то вроде этого (использование jQuery)
<div id="mvcpartial"></div>
<script type="text/javascript">
$(document).load(function () {
$.ajax(
{
type: "GET",
url : "urltoyourmvcaction",
success : function (msg) { $("#mvcpartial").html(msg); }
});
});
</script>