.net中前后端不分离,想写.vue组件怎么办?用.ascx代替

1,660 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

问题: .net中没.vue

在前端开发人员眼中,前后端分离的项目开发模式无疑是最方便的, 但是有时候会事事并不能尽如人意。目前部门的项目都是使用Visual Studio进行开发的,所以基本都是C#的.net项目。

在我去年毕业刚入职后,有一个新项目要进行开发,刚刚进就要开始干活啦,当时在前端上准备统一使用vue的架构。不过项目当中前后端是不分离的,因此项目中也并没有使用webpack这类打包工具,当然更别提vue cli了。

没有就没有吧,直接用aspx来代替html进行编写,直接写在里面吧。

不过没做多久就发现了新问题,因为需要我制作一些共用的组件,所以我当时一心就是想使用.vue的方式去写出组件来,但是这样我就发现问题了,.net项目怎么会支持.vue格式的文件呢,无法使用<template></template>去定义vue组件,一般来说vue组件的定义是由<template>包裹的,但是在项目中<template>属于无效标签。

解决

百思不得其解,当时网上也查了.net挺久的。

asp.net开发,大概都会了解到.aspx,.ascx.ashx

这里重点就是.ascx,比较正式的介绍:

asp.net的用户控件,是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。

我可以把.ascx当作.vue文件来写,里面大致写法基本上也是相同的。

首先创建一个用户控件:

image.png

可以在新建项中选择,也可以直接选择下方的web窗体用户控件

image.png

创建好了之后,里面的大致格式基本上也是与.vue相同

页面中的代码格式如下: 这里主体的元素可以使用<script></script>包裹,不过类型要选择成text/template。其他的写法基本就与是一样了。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="" %>

<!-- 样式 -->
<style>
</style>

<!-- 元素 -->
<script id="onecatalogs" type="text/template">
	<div class="teaching-catalog"></div>
</script>	

<script>
    //子组件 
    var son = {
        template: "#onecatalogs",
        props:[],
        data: function () {
            return {}
        },
        created: function () {},
        mounted: function () {},
        updated:function(){},
        methods: {},
        filters: {}
    }
</script>

引用:创建好ascx组件之后,可以直接拖动ascx进入aspx页面当中,然后在aspx的vue的components当中将组件添加进入。

例子

  1. 拖入 image.png

  2. 组件添加

image.png

  1. 调用

image.png


这样,即使是前后端不分离的项目,同样也可以写.vue组件了。 每天一个小知识Get